On Mon, 4 Dec 2017, NeilBrown wrote:
I think you need to add groups_sort() in a few more places. Almost anywhere that calls groups_alloc() should be considered. net/sunrpc/svcauth_unix.c, net/sunrpc/auth_gss/svcauth_gss.c, fs/nfsd/auth.c definitely need it.
So are any other functions that modify group_info. OK, I think I'll implement the type detection below as it helps detecting where these situations are located.
This may take some time to make sane. I wonder if we shouldn't accept the first change suggested to fix the corruption detected in auth.unix.gid while I work on a new set of patches. Also, that patch doesn't change behavior of set_groups, and is easier to backport if distros relying on older kernels need to do so and change behavior. The first suggestion is undergoing tests, and so far we didn't detect any new corruptions on auth.unix.gid.
Maybe it could be done with types.
I changed the interfaces on groups_{alloc,sort} to check. There are some extra changes needed in groups_from_user and others to make this viable, but I like it and I'll try to make it happen.
Thanks, NeilBrown
Thanks, trbecker