diff options
Diffstat (limited to 'net/sunrpc/svcauth_unix.c')
-rw-r--r-- | net/sunrpc/svcauth_unix.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/net/sunrpc/svcauth_unix.c b/net/sunrpc/svcauth_unix.c index bdea0a1b6d1d..a1852e19ed0c 100644 --- a/net/sunrpc/svcauth_unix.c +++ b/net/sunrpc/svcauth_unix.c | |||
@@ -821,8 +821,10 @@ svcauth_unix_accept(struct svc_rqst *rqstp, __be32 *authp) | |||
821 | argv->iov_base = (void*)((__be32*)argv->iov_base + slen); /* skip machname */ | 821 | argv->iov_base = (void*)((__be32*)argv->iov_base + slen); /* skip machname */ |
822 | argv->iov_len -= slen*4; | 822 | argv->iov_len -= slen*4; |
823 | 823 | ||
824 | cred->cr_uid = svc_getnl(argv); /* uid */ | 824 | cred->cr_uid = make_kuid(&init_user_ns, svc_getnl(argv)); /* uid */ |
825 | cred->cr_gid = svc_getnl(argv); /* gid */ | 825 | cred->cr_gid = make_kgid(&init_user_ns, svc_getnl(argv)); /* gid */ |
826 | if (!uid_valid(cred->cr_uid) || !gid_valid(cred->cr_gid)) | ||
827 | goto badcred; | ||
826 | slen = svc_getnl(argv); /* gids length */ | 828 | slen = svc_getnl(argv); /* gids length */ |
827 | if (slen > 16 || (len -= (slen + 2)*4) < 0) | 829 | if (slen > 16 || (len -= (slen + 2)*4) < 0) |
828 | goto badcred; | 830 | goto badcred; |