Re: [BK PATCH 1/2] Remove NGROUPS hardlimit (resend w/o qsort)
Andrew Morton (akpm@digeo.com)
Thu, 14 Nov 2002 17:30:33 -0800
Tim Hockin wrote:
> 
> Andrew Morton wrote:
> 
> > What are you actually using the search for?
> >
> >>From a quick look, it seems that it's purely to answer
> > the question "is this process a member of group X?".  Is
> > that correct?
> >
> > If so, test_bit() would work nicely.
> 
> This could work if we find the max gid, allocate an array of
> max_gid/CHAR_BITS + 1 bytes then test_bit, but given the non-contiguity
> (is that a word) of group memberships, we'll waste a lot of space on
> holes. Now, it could be argued that 10,000 groups are PROBABLY local
> enough.  Getting the groups back out will be nasty nastiness, though.
> 
> perhaps:
> 
> if (gidsetsize < (2 * EXEC_PAGESIZE)/sizeof(gid_t)) { /* or something */
>         /* use kmalloc() */
> else
>         /* use vmalloc() */
> 
> thoughts?
> 
10,000 bits isn't much.  Maybe:
- add `char groups[16]' to task_struct
- add `struct page *groups_page' to task_struct
- then
	if (getsetsize <= 256)
		use current->groups[]		/* 256 groups max */
	else
		use current->groups_page;	/* 32768 groups max */
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/