diff options
Diffstat (limited to 'net')
| -rw-r--r-- | net/core/scm.c | 10 | ||||
| -rw-r--r-- | net/sunrpc/auth.c | 2 | 
2 files changed, 7 insertions, 5 deletions
diff --git a/net/core/scm.c b/net/core/scm.c index 4681d8f9b45..c28ca32a7d9 100644 --- a/net/core/scm.c +++ b/net/core/scm.c @@ -44,11 +44,13 @@  static __inline__ int scm_check_creds(struct ucred *creds)  { +	struct cred *cred = current->cred; +  	if ((creds->pid == task_tgid_vnr(current) || capable(CAP_SYS_ADMIN)) && -	    ((creds->uid == current_uid()   || creds->uid == current_euid() || -	      creds->uid == current_suid()) || capable(CAP_SETUID)) && -	    ((creds->gid == current_gid()   || creds->gid == current_egid() || -	      creds->gid == current_sgid()) || capable(CAP_SETGID))) { +	    ((creds->uid == cred->uid   || creds->uid == cred->euid || +	      creds->uid == cred->suid) || capable(CAP_SETUID)) && +	    ((creds->gid == cred->gid   || creds->gid == cred->egid || +	      creds->gid == cred->sgid) || capable(CAP_SETGID))) {  	       return 0;  	}  	return -EPERM; diff --git a/net/sunrpc/auth.c b/net/sunrpc/auth.c index 8fc38057880..c7954321260 100644 --- a/net/sunrpc/auth.c +++ b/net/sunrpc/auth.c @@ -353,7 +353,7 @@ rpcauth_lookupcred(struct rpc_auth *auth, int flags)  	struct auth_cred acred = {  		.uid = current_fsuid(),  		.gid = current_fsgid(), -		.group_info = current->group_info, +		.group_info = current->cred->group_info,  	};  	struct rpc_cred *ret;  |