summaryrefslogtreecommitdiff
path: root/kernel/sys.c
diff options
context:
space:
mode:
authorRusty Russell <rusty@rustcorp.com.au>2002-12-05 05:55:08 -0800
committerLinus Torvalds <torvalds@home.transmeta.com>2002-12-05 05:55:08 -0800
commit90804bd59e30c2e48ff2980af124ed99f7bc4e38 (patch)
treebd24fb676e6a7056fd5a12b4189579e41ca65c58 /kernel/sys.c
parentd2a0e2b698789414e7a11334f14431d22f0ec738 (diff)
[PATCH] setrlimit incorrectly allows hard limits to exceed soft limits
From: Kingsley Cheung <kingsley@aurema.com>
Diffstat (limited to 'kernel/sys.c')
-rw-r--r--kernel/sys.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/sys.c b/kernel/sys.c
index e8bd2c9f969b..b06552e349e5 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -1233,6 +1233,8 @@ asmlinkage long sys_setrlimit(unsigned int resource, struct rlimit *rlim)
return -EINVAL;
if(copy_from_user(&new_rlim, rlim, sizeof(*rlim)))
return -EFAULT;
+ if (new_rlim.rlim_cur > new_rlim.rlim_max)
+ return -EINVAL;
old_rlim = current->rlim + resource;
if (((new_rlim.rlim_cur > old_rlim->rlim_max) ||
(new_rlim.rlim_max > old_rlim->rlim_max)) &&