Re: Broke nice range for RLIMIT NICE

Chris Wright
2005-07-29T20:54:06Z

* Chris Wright (chrisw@osdl.org) wrote:
> Yes, this requires updated pam patch.

Here's the updated pam patch. I left the lower end at 0 rather than 1,
since it's no harm.

--- Linux-PAM-0.77/modules/pam_limits/pam_limits.c.prio 2005-01-14 10:47:03.000000000 -0800
+++ Linux-PAM-0.77/modules/pam_limits/pam_limits.c 2005-01-14 10:55:13.000000000 -0800
@@ -39,6 +39,11 @@
#include <grp.h>
#include <pwd.h>

+/* Hack to test new rlimit values */
+#define RLIMIT_NICE 13
+#define RLIMIT_RTPRIO 14
+#define RLIM_NLIMITS 15
+
/* Module defines */
#define LINE_LENGTH 1024

@@ -293,6 +298,10 @@ static void process_limit(int source, co
else if (strcmp(lim_item, "locks") == 0)
limit_item = RLIMIT_LOCKS;
#endif
+ else if (strcmp(lim_item, "rt_priority") == 0)
+ limit_item = RLIMIT_RTPRIO;
+ else if (strcmp(lim_item, "nice") == 0)
+ limit_item = RLIMIT_NICE;
else if (strcmp(lim_item, "maxlogins") == 0) {
limit_item = LIMIT_LOGIN;
pl->flag_numsyslogins = 0;
@@ -360,6 +369,19 @@ static void process_limit(int source, co
case RLIMIT_AS:
limit_value *= 1024;
break;
+ case RLIMIT_NICE:
+ limit_value = 20 - limit_value;
+ if (limit_value > 40)
+ limit_value = 40;
+ if (limit_value < 0)
+ limit_value = 0;
+ break;
+ case RLIMIT_RTPRIO:
+ if (limit_value > 99)
+ limit_value = 99;
+ if (limit_value < 0)
+ limit_value = 0;
+ break;
}

if ( (limit_item != LIMIT_LOGIN)