summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorKacper Kornet <kornet@camk.edu.pl>2011-01-29 00:21:04 +0100
committerGreg Kroah-Hartman <gregkh@suse.de>2011-02-17 14:47:16 -0800
commitceb615bfeb0a612b13a7d58b4e09194b92e85fbb (patch)
tree2b312faef820b4125f4d44d0db65a2f76b931fe9 /kernel
parentfd70b698a14e58cdd9f35715f9594a9084ac54c0 (diff)
Fix prlimit64 for suid/sgid processes
commit aa5bd67dcfdf9af34c7fa36ebc87d4e1f7e91873 upstream. 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> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/sys.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/kernel/sys.c b/kernel/sys.c
index 7f5a0cd296a9..66136ca33a7b 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -1377,7 +1377,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 ||