[PATCH 2.6.27-rc5] Allow set RLIMIT_NOFILE to RLIM_INFINITY

From: Adam Tkac
Date: Tue Sep 09 2008 - 03:14:34 EST


Hi all,

when process wants set limit of open files to RLIM_INFINITY it gets
EPERM even if it has CAP_SYS_RESOURCE capability. Attached patch
should fix the problem. Please add me to CC of your responses because
I'm not member of list.

Regards, Adam

--
Adam Tkac
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -1458,8 +1458,14 @@ asmlinkage long sys_setrlimit(unsigned i
if ((new_rlim.rlim_max > old_rlim->rlim_max) &&
!capable(CAP_SYS_RESOURCE))
return -EPERM;
- if (resource == RLIMIT_NOFILE && new_rlim.rlim_max > sysctl_nr_open)
- return -EPERM;
+ if (resource == RLIMIT_NOFILE) {
+ if (new_rlim.rlim_max == RLIM_INFINITY)
+ new_rlim.rlim_max = sysctl_nr_open;
+ if (new_rlim.rlim_cur == RLIM_INFINITY)
+ new_rlim.rlim_cur = sysctl_nr_open;
+ if (new_rlim.rlim_max > sysctl_nr_open)
+ return -EPERM;
+ }

retval = security_task_setrlimit(resource, &new_rlim);
if (retval)