diff -ru c/include/linux/sunrpc/msg_prot.h d/include/linux/sunrpc/msg_prot.h --- c/include/linux/sunrpc/msg_prot.h 2004-05-10 04:32:54.000000000 +0200 +++ d/include/linux/sunrpc/msg_prot.h 2004-09-14 23:20:20.000000000 +0200 @@ -75,6 +75,7 @@ #define RPC_PMAP_PORT 111 #define RPC_MAXNETNAMELEN 256 +#define RPC_MAXGROUPS 16 #endif /* __KERNEL__ */ #endif /* _LINUX_SUNRPC_MSGPROT_H_ */ diff -ru c/include/linux/sunrpc/svcauth.h d/include/linux/sunrpc/svcauth.h --- c/include/linux/sunrpc/svcauth.h 2004-08-15 12:38:54.000000000 +0200 +++ d/include/linux/sunrpc/svcauth.h 2004-09-14 23:20:20.000000000 +0200 @@ -16,7 +16,6 @@ #include #include -#define SVC_CRED_NGROUPS 32 struct svc_cred { uid_t cr_uid; gid_t cr_gid; diff -ru c/net/sunrpc/auth.c d/net/sunrpc/auth.c --- c/net/sunrpc/auth.c 2004-05-10 04:32:37.000000000 +0200 +++ d/net/sunrpc/auth.c 2004-09-14 23:20:20.000000000 +0200 @@ -249,7 +249,7 @@ } } - return (struct rpc_cred *) cred; + return cred; } struct rpc_cred * diff -ru c/net/sunrpc/auth_gss/auth_gss.c d/net/sunrpc/auth_gss/auth_gss.c --- c/net/sunrpc/auth_gss/auth_gss.c 2004-09-14 23:03:19.000000000 +0200 +++ d/net/sunrpc/auth_gss/auth_gss.c 2004-09-14 23:20:20.000000000 +0200 @@ -63,8 +63,6 @@ # define RPCDBG_FACILITY RPCDBG_AUTH #endif -#define NFS_NGROUPS 16 - #define GSS_CRED_EXPIRE (60 * HZ) /* XXX: reasonable? */ #define GSS_CRED_SLACK 1024 /* XXX: unused */ /* length of a krb5 verifier (48), plus data added before arguments when diff -ru c/net/sunrpc/auth_unix.c d/net/sunrpc/auth_unix.c --- c/net/sunrpc/auth_unix.c 2004-05-10 04:32:39.000000000 +0200 +++ d/net/sunrpc/auth_unix.c 2004-09-14 23:20:20.000000000 +0200 @@ -14,14 +14,12 @@ #include #include -#define NFS_NGROUPS 16 - struct unx_cred { struct rpc_cred uc_base; gid_t uc_gid; uid_t uc_puid; /* process uid */ gid_t uc_pgid; /* process gid */ - gid_t uc_gids[NFS_NGROUPS]; + gid_t uc_gids[RPC_MAXGROUPS]; }; #define uc_uid uc_base.cr_uid #define uc_count uc_base.cr_count @@ -83,8 +81,8 @@ cred->uc_gids[0] = NOGROUP; } else { int groups = acred->group_info->ngroups; - if (groups > NFS_NGROUPS) - groups = NFS_NGROUPS; + if (groups > RPC_MAXGROUPS) + groups = RPC_MAXGROUPS; cred->uc_uid = acred->uid; cred->uc_gid = acred->gid; @@ -92,8 +90,8 @@ cred->uc_pgid = current->gid; for (i = 0; i < groups; i++) cred->uc_gids[i] = GROUP_AT(acred->group_info, i); - if (i < NFS_NGROUPS) - cred->uc_gids[i] = NOGROUP; + if (i < RPC_MAXGROUPS) + cred->uc_gids[i] = NOGROUP; } cred->uc_base.cr_ops = &unix_credops; @@ -127,8 +125,8 @@ return 0; groups = acred->group_info->ngroups; - if (groups > NFS_NGROUPS) - groups = NFS_NGROUPS; + if (groups > RPC_MAXGROUPS) + groups = RPC_MAXGROUPS; for (i = 0; i < groups ; i++) if (cred->uc_gids[i] != GROUP_AT(acred->group_info, i)) return 0; @@ -169,7 +167,7 @@ *p++ = htonl((u32) cred->uc_gid); } hold = p++; - for (i = 0; i < 16 && cred->uc_gids[i] != (gid_t) NOGROUP; i++) + for (i = 0; i < RPC_MAXGROUPS && cred->uc_gids[i] != (gid_t) NOGROUP; i++) *p++ = htonl((u32) cred->uc_gids[i]); *hold = htonl(p - hold - 1); /* gid array length */ *base = htonl((p - base - 1) << 2); /* cred length */ diff -ru c/net/sunrpc/svcauth_unix.c d/net/sunrpc/svcauth_unix.c --- c/net/sunrpc/svcauth_unix.c 2004-09-14 23:03:19.000000000 +0200 +++ d/net/sunrpc/svcauth_unix.c 2004-09-14 23:20:20.000000000 +0200 @@ -445,7 +445,7 @@ cred->cr_uid = ntohl(svc_getu32(argv)); /* uid */ cred->cr_gid = ntohl(svc_getu32(argv)); /* gid */ slen = ntohl(svc_getu32(argv)); /* gids length */ - if (slen > 16 || (len -= (slen + 2)*4) < 0) + if (slen > RPC_MAXGROUPS || (len -= (slen + 2)*4) < 0) goto badcred; cred->cr_group_info = groups_alloc(slen); if (cred->cr_group_info == NULL)