take compat_sys_old_getrlimit() to native syscall
... and sanitize the ifdefs in there Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
24
kernel/sys.c
24
kernel/sys.c
@@ -1328,6 +1328,30 @@ SYSCALL_DEFINE2(old_getrlimit, unsigned int, resource,
|
||||
return copy_to_user(rlim, &x, sizeof(x)) ? -EFAULT : 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
COMPAT_SYSCALL_DEFINE2(old_getrlimit, unsigned int, resource,
|
||||
struct compat_rlimit __user *, rlim)
|
||||
{
|
||||
struct rlimit r;
|
||||
|
||||
if (resource >= RLIM_NLIMITS)
|
||||
return -EINVAL;
|
||||
|
||||
task_lock(current->group_leader);
|
||||
r = current->signal->rlim[resource];
|
||||
task_unlock(current->group_leader);
|
||||
if (r.rlim_cur > 0x7FFFFFFF)
|
||||
r.rlim_cur = 0x7FFFFFFF;
|
||||
if (r.rlim_max > 0x7FFFFFFF)
|
||||
r.rlim_max = 0x7FFFFFFF;
|
||||
|
||||
if (put_user(r.rlim_cur, &rlim->rlim_cur) ||
|
||||
put_user(r.rlim_max, &rlim->rlim_max))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
static inline bool rlim64_is_infinity(__u64 rlim64)
|
||||
|
||||
Reference in New Issue
Block a user