diff options
author | Kacper Kornet <kornet@camk.edu.pl> | 2011-01-29 00:21:04 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-31 13:01:27 +1000 |
commit | aa5bd67dcfdf9af34c7fa36ebc87d4e1f7e91873 (patch) | |
tree | 95196496421cd8e7ad4c655becf2fa3309c88052 /kernel/sys.c | |
parent | 2f215a7d6d1d8ed0bbdda4fc4f7d64e3a1d46acc (diff) | |
download | op-kernel-dev-aa5bd67dcfdf9af34c7fa36ebc87d4e1f7e91873.zip op-kernel-dev-aa5bd67dcfdf9af34c7fa36ebc87d4e1f7e91873.tar.gz |
Fix prlimit64 for suid/sgid processes
Since check_prlimit_permission always fails in the case of SUID/GUID
processes, such processes are not able to read or set their own limits.
This commit changes this by assuming that process can always read/change
its own limits.
Signed-off-by: Kacper Kornet <kornet@camk.edu.pl>
Acked-by: Jiri Slaby <jslaby@suse.cz>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel/sys.c')
-rw-r--r-- | kernel/sys.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/kernel/sys.c b/kernel/sys.c index 31b71a2..18da702 100644 --- a/kernel/sys.c +++ b/kernel/sys.c @@ -1385,7 +1385,8 @@ static int check_prlimit_permission(struct task_struct *task) const struct cred *cred = current_cred(), *tcred; tcred = __task_cred(task); - if ((cred->uid != tcred->euid || + if (current != task && + (cred->uid != tcred->euid || cred->uid != tcred->suid || cred->uid != tcred->uid || cred->gid != tcred->egid || |