From 68621ee3886db9a038feffacb1ff8e4cdaf93b94 Mon Sep 17 00:00:00 2001 From: "Eric W. Biederman" Date: Sat, 2 Feb 2013 06:24:49 -0800 Subject: [PATCH] --- yaml --- r: 357829 b: refs/heads/master c: 03bc6d1cc1759e6b5959cacc02a19ef36e95e741 h: refs/heads/master i: 357827: ed1761eb5ec0f538507e448e63a836d817a2cba2 v: v3 --- [refs] | 2 +- trunk/fs/nfsd/nfs4xdr.c | 13 ++++++++++--- trunk/fs/nfsd/state.h | 4 ++-- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index e3ff4c1bce92..8fca8582021d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ab8e4aee0a3f73d1b12e6d63b42075f0586ad4fd +refs/heads/master: 03bc6d1cc1759e6b5959cacc02a19ef36e95e741 diff --git a/trunk/fs/nfsd/nfs4xdr.c b/trunk/fs/nfsd/nfs4xdr.c index 3812b06d24b1..2d1d06bae3a7 100644 --- a/trunk/fs/nfsd/nfs4xdr.c +++ b/trunk/fs/nfsd/nfs4xdr.c @@ -464,9 +464,16 @@ static __be32 nfsd4_decode_cb_sec(struct nfsd4_compoundargs *argp, struct nfsd4_ READ32(dummy); READ_BUF(dummy * 4); if (cbs->flavor == (u32)(-1)) { - cbs->uid = uid; - cbs->gid = gid; - cbs->flavor = RPC_AUTH_UNIX; + kuid_t kuid = make_kuid(&init_user_ns, uid); + kgid_t kgid = make_kgid(&init_user_ns, gid); + if (uid_valid(kuid) && gid_valid(kgid)) { + cbs->uid = kuid; + cbs->gid = kgid; + cbs->flavor = RPC_AUTH_UNIX; + } else { + dprintk("RPC_AUTH_UNIX with invalid" + "uid or gid ignoring!\n"); + } } break; case RPC_AUTH_GSS: diff --git a/trunk/fs/nfsd/state.h b/trunk/fs/nfsd/state.h index d1c229feed52..1a8c7391f7ae 100644 --- a/trunk/fs/nfsd/state.h +++ b/trunk/fs/nfsd/state.h @@ -152,8 +152,8 @@ struct nfsd4_channel_attrs { struct nfsd4_cb_sec { u32 flavor; /* (u32)(-1) used to mean "no valid flavor" */ - u32 uid; - u32 gid; + kuid_t uid; + kgid_t gid; }; struct nfsd4_create_session {