diff options
| author | Eric W. Biederman <ebiederm@xmission.com> | 2012-03-03 20:21:47 -0800 | 
|---|---|---|
| committer | Eric W. Biederman <ebiederm@xmission.com> | 2012-05-03 03:28:51 -0700 | 
| commit | 5af662030e5db1a5560fd917250d5d688a6be586 (patch) | |
| tree | c648c0bf8afe4571cf13b098bd6e24fbce86789c /kernel/sys.c | |
| parent | a29c33f4e506e1dae7e0985b6328046535becbf8 (diff) | |
| download | olio-linux-3.10-5af662030e5db1a5560fd917250d5d688a6be586.tar.xz olio-linux-3.10-5af662030e5db1a5560fd917250d5d688a6be586.zip  | |
userns: Convert ptrace, kill, set_priority permission checks to work with kuids and kgids
Update the permission checks to use the new uid_eq and gid_eq helpers
and remove the now unnecessary user_ns equality comparison.
Acked-by: Serge Hallyn <serge.hallyn@canonical.com>
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Diffstat (limited to 'kernel/sys.c')
| -rw-r--r-- | kernel/sys.c | 18 | 
1 files changed, 8 insertions, 10 deletions
diff --git a/kernel/sys.c b/kernel/sys.c index aff09f208eb..f484077b6b1 100644 --- a/kernel/sys.c +++ b/kernel/sys.c @@ -131,9 +131,8 @@ static bool set_one_prio_perm(struct task_struct *p)  {  	const struct cred *cred = current_cred(), *pcred = __task_cred(p); -	if (pcred->user_ns == cred->user_ns && -	    (pcred->uid  == cred->euid || -	     pcred->euid == cred->euid)) +	if (uid_eq(pcred->uid,  cred->euid) || +	    uid_eq(pcred->euid, cred->euid))  		return true;  	if (ns_capable(pcred->user_ns, CAP_SYS_NICE))  		return true; @@ -1582,13 +1581,12 @@ static int check_prlimit_permission(struct task_struct *task)  		return 0;  	tcred = __task_cred(task); -	if (cred->user_ns == tcred->user_ns && -	    (cred->uid == tcred->euid && -	     cred->uid == tcred->suid && -	     cred->uid == tcred->uid && -	     cred->gid == tcred->egid && -	     cred->gid == tcred->sgid && -		    cred->gid == tcred->gid)) +	if (uid_eq(cred->uid, tcred->euid) && +	    uid_eq(cred->uid, tcred->suid) && +	    uid_eq(cred->uid, tcred->uid)  && +	    gid_eq(cred->gid, tcred->egid) && +	    gid_eq(cred->gid, tcred->sgid) && +	    gid_eq(cred->gid, tcred->gid))  		return 0;  	if (ns_capable(tcred->user_ns, CAP_SYS_RESOURCE))  		return 0;  |