diff options
Diffstat (limited to 'net/sunrpc/auth_generic.c')
| -rw-r--r-- | net/sunrpc/auth_generic.c | 16 | 
1 files changed, 9 insertions, 7 deletions
diff --git a/net/sunrpc/auth_generic.c b/net/sunrpc/auth_generic.c index 6ed6f201b02..b6badafc649 100644 --- a/net/sunrpc/auth_generic.c +++ b/net/sunrpc/auth_generic.c @@ -18,8 +18,8 @@  # define RPCDBG_FACILITY	RPCDBG_AUTH  #endif -#define RPC_MACHINE_CRED_USERID		((uid_t)0) -#define RPC_MACHINE_CRED_GROUPID	((gid_t)0) +#define RPC_MACHINE_CRED_USERID		GLOBAL_ROOT_UID +#define RPC_MACHINE_CRED_GROUPID	GLOBAL_ROOT_GID  struct generic_cred {  	struct rpc_cred gc_base; @@ -96,7 +96,9 @@ generic_create_cred(struct rpc_auth *auth, struct auth_cred *acred, int flags)  	dprintk("RPC:       allocated %s cred %p for uid %d gid %d\n",  			gcred->acred.machine_cred ? "machine" : "generic", -			gcred, acred->uid, acred->gid); +			gcred, +			from_kuid(&init_user_ns, acred->uid), +			from_kgid(&init_user_ns, acred->gid));  	return &gcred->gc_base;  } @@ -129,8 +131,8 @@ machine_cred_match(struct auth_cred *acred, struct generic_cred *gcred, int flag  {  	if (!gcred->acred.machine_cred ||  	    gcred->acred.principal != acred->principal || -	    gcred->acred.uid != acred->uid || -	    gcred->acred.gid != acred->gid) +	    !uid_eq(gcred->acred.uid, acred->uid) || +	    !gid_eq(gcred->acred.gid, acred->gid))  		return 0;  	return 1;  } @@ -147,8 +149,8 @@ generic_match(struct auth_cred *acred, struct rpc_cred *cred, int flags)  	if (acred->machine_cred)  		return machine_cred_match(acred, gcred, flags); -	if (gcred->acred.uid != acred->uid || -	    gcred->acred.gid != acred->gid || +	if (!uid_eq(gcred->acred.uid, acred->uid) || +	    !gid_eq(gcred->acred.gid, acred->gid) ||  	    gcred->acred.machine_cred != 0)  		goto out_nomatch;  |