mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Chris Wright <chrisw@osdl.org>
To: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: "Jack O'Quin" <joq@io.com>, Ingo Molnar <mingo@elte.hu>,
	Paul Davis <paul@linuxaudiosystems.com>,
	Con Kolivas <kernel@kolivas.org>,
	linux <linux-kernel@vger.kernel.org>,
	rlrevell@joe-job.com, CK Kernel <ck@vds.kolivas.org>,
	utz <utz@s2y4n2c.de>, Andrew Morton <akpm@osdl.org>,
	alexn@dsv.su.se, Rui Nuno Capela <rncbc@rncbc.org>,
	Chris Wright <chrisw@osdl.org>,
	Arjan van de Ven <arjanv@redhat.com>
Subject: Re: [PATCH]sched: Isochronous class v2 for unprivileged soft rt scheduling
Date: Sat, 22 Jan 2005 18:58:47 -0800	[thread overview]
Message-ID: <20050122185847.R24171@build.pdx.osdl.net> (raw)
In-Reply-To: <41F306B0.7050306@yahoo.com.au>; from nickpiggin@yahoo.com.au on Sun, Jan 23, 2005 at 01:06:40PM +1100

* Nick Piggin (nickpiggin@yahoo.com.au) wrote:
> Jack O'Quin wrote:
> 
> > Chris Wright and Arjan van de Ven have outlined a proposal to address
> > the privilege issue using rlimits.  This is still the only workable
> > alternative to the realtime LSM on the table.  If the decision were up
> > to me, I would choose the simplicity and better security of the LSM.
> > But their approach is adequate, if implemented in a timely fashion.  I
> > would like to see some progress on this in addition to the scheduler
> > work.  People still need SCHED_FIFO for some applications.
> > 
> 
> I think this is a pretty sane and minimally intrusive (for the kernel)
> way to support what you want.

Here's an untested respin against current bk.

thanks,
-chris

===== include/asm-generic/resource.h 1.1 vs edited =====
--- 1.1/include/asm-generic/resource.h	2005-01-20 21:00:51 -08:00
+++ edited/include/asm-generic/resource.h	2005-01-22 18:54:58 -08:00
@@ -20,8 +20,11 @@
 #define RLIMIT_LOCKS		10	/* maximum file locks held */
 #define RLIMIT_SIGPENDING	11	/* max number of pending signals */
 #define RLIMIT_MSGQUEUE		12	/* maximum bytes in POSIX mqueues */
-
-#define RLIM_NLIMITS		13
+#define RLIMIT_NICE		13	/* max nice prio allowed to raise to
+					   0-39 for nice level 19 .. -20 */
+#define RLIMIT_RTPRIO		14	/* maximum realtime priority */
+  
+#define RLIM_NLIMITS		15
 #endif
 
 /*
@@ -53,6 +56,8 @@
 	[RLIMIT_LOCKS]		= { RLIM_INFINITY, RLIM_INFINITY },	\
 	[RLIMIT_SIGPENDING]	= { MAX_SIGPENDING, MAX_SIGPENDING },	\
 	[RLIMIT_MSGQUEUE]	= { MQ_BYTES_MAX, MQ_BYTES_MAX },	\
+	[RLIMIT_NICE]		= {             0,             0 },	\
+	[RLIMIT_RTPRIO]		= {             0,             0 },	\
 }
 
 #endif	/* __KERNEL__ */
===== include/asm-alpha/resource.h 1.6 vs edited =====
--- 1.6/include/asm-alpha/resource.h	2005-01-20 21:00:50 -08:00
+++ edited/include/asm-alpha/resource.h	2005-01-22 18:58:04 -08:00
@@ -18,8 +18,11 @@
 #define RLIMIT_LOCKS	10		/* maximum file locks held */
 #define RLIMIT_SIGPENDING 11		/* max number of pending signals */
 #define RLIMIT_MSGQUEUE 12		/* maximum bytes in POSIX mqueues */
-
-#define RLIM_NLIMITS	13
+#define RLIMIT_NICE	13		/* max nice prio allowed to raise to
+					   0-39 for nice level 19 .. -20 */
+#define RLIMIT_RTPRIO	14		/* maximum realtime priority */
+ 
+#define RLIM_NLIMITS	15
 #define __ARCH_RLIMIT_ORDER
 
 /*
===== include/asm-mips/resource.h 1.8 vs edited =====
--- 1.8/include/asm-mips/resource.h	2005-01-20 21:00:50 -08:00
+++ edited/include/asm-mips/resource.h	2005-01-22 18:59:29 -08:00
@@ -25,8 +25,11 @@
 #define RLIMIT_LOCKS 10			/* maximum file locks held */
 #define RLIMIT_SIGPENDING 11		/* max number of pending signals */
 #define RLIMIT_MSGQUEUE 12		/* maximum bytes in POSIX mqueues */
+#define RLIMIT_NICE 13			/* max nice prio allowed to raise to
+					   0-39 for nice level 19 .. -20 */
+#define RLIMIT_RTPRIO 14		/* maximum realtime priority */
 
-#define RLIM_NLIMITS 13			/* Number of limit flavors.  */
+#define RLIM_NLIMITS 15			/* Number of limit flavors.  */
 #define __ARCH_RLIMIT_ORDER
 
 /*
===== include/asm-sparc/resource.h 1.6 vs edited =====
--- 1.6/include/asm-sparc/resource.h	2005-01-20 21:00:50 -08:00
+++ edited/include/asm-sparc/resource.h	2005-01-22 19:00:07 -08:00
@@ -24,8 +24,11 @@
 #define RLIMIT_LOCKS	10		/* maximum file locks held */
 #define RLIMIT_SIGPENDING 11		/* max number of pending signals */
 #define RLIMIT_MSGQUEUE 12		/* maximum bytes in POSIX mqueues */
+#define RLIMIT_NICE	13		/* max nice prio allowed to raise to
+					   0-39 for nice level 19 .. -20 */
+#define RLIMIT_RTPRIO	14		/* maximum realtime priority */
 
-#define RLIM_NLIMITS	13
+#define RLIM_NLIMITS	15
 #define __ARCH_RLIMIT_ORDER
 
 /*
===== include/asm-sparc64/resource.h 1.6 vs edited =====
--- 1.6/include/asm-sparc64/resource.h	2005-01-20 21:00:50 -08:00
+++ edited/include/asm-sparc64/resource.h	2005-01-22 19:00:41 -08:00
@@ -24,8 +24,11 @@
 #define RLIMIT_LOCKS	10		/* maximum file locks held */
 #define RLIMIT_SIGPENDING 11		/* max number of pending signals */
 #define RLIMIT_MSGQUEUE 12		/* maximum bytes in POSIX mqueues */
+#define RLIMIT_NICE	13		/* max nice prio allowed to raise to
+					   0-39 for nice level 19 .. -20 */
+#define RLIMIT_RTPRIO	14		/* maximum realtime priority */
 
-#define RLIM_NLIMITS	13
+#define RLIM_NLIMITS	15
 #define __ARCH_RLIMIT_ORDER
 
 #include <asm-generic/resource.h>
===== include/linux/sched.h 1.274 vs edited =====
--- 1.274/include/linux/sched.h	2005-01-18 12:27:58 -08:00
+++ edited/include/linux/sched.h	2005-01-22 18:52:07 -08:00
@@ -767,6 +767,7 @@ extern void sched_idle_next(void);
 extern void set_user_nice(task_t *p, long nice);
 extern int task_prio(const task_t *p);
 extern int task_nice(const task_t *p);
+extern int can_nice(const task_t *p, const int nice);
 extern int task_curr(const task_t *p);
 extern int idle_cpu(int cpu);
 extern int sched_setscheduler(struct task_struct *, int, struct sched_param *);
===== kernel/sched.c 1.387 vs edited =====
--- 1.387/kernel/sched.c	2005-01-20 16:00:00 -08:00
+++ edited/kernel/sched.c	2005-01-22 18:52:07 -08:00
@@ -3220,6 +3220,19 @@ out_unlock:
 
 EXPORT_SYMBOL(set_user_nice);
 
+/**
+ * can_nice - check if a task can reduce its nice value
+   @p: task
+ * @nice: nice value
+ */
+int can_nice(const task_t *p, const int nice)
+{
+	/* convert nice value [19,-20] to rlimit style value [0,39] */
+	int nice_rlim = 19 - nice;
+	return (nice_rlim <= p->signal->rlim[RLIMIT_NICE].rlim_cur || 
+		capable(CAP_SYS_NICE));
+}
+
 #ifdef __ARCH_WANT_SYS_NICE
 
 /*
@@ -3239,12 +3252,8 @@ asmlinkage long sys_nice(int increment)
 	 * We don't have to worry. Conceptually one call occurs first
 	 * and we have a single winner.
 	 */
-	if (increment < 0) {
-		if (!capable(CAP_SYS_NICE))
-			return -EPERM;
-		if (increment < -40)
-			increment = -40;
-	}
+	if (increment < -40)
+		increment = -40;
 	if (increment > 40)
 		increment = 40;
 
@@ -3254,6 +3263,9 @@ asmlinkage long sys_nice(int increment)
 	if (nice > 19)
 		nice = 19;
 
+	if (increment < 0 && !can_nice(current, nice))
+		return -EPERM;
+
 	retval = security_task_setnice(current, nice);
 	if (retval)
 		return retval;
@@ -3369,6 +3381,7 @@ recheck:
 		return -EINVAL;
 
 	if ((policy == SCHED_FIFO || policy == SCHED_RR) &&
+	    param->sched_priority > p->signal->rlim[RLIMIT_RTPRIO].rlim_cur && 
 	    !capable(CAP_SYS_NICE))
 		return -EPERM;
 	if ((current->euid != p->euid) && (current->euid != p->uid) &&
===== kernel/sys.c 1.104 vs edited =====
--- 1.104/kernel/sys.c	2005-01-11 16:42:35 -08:00
+++ edited/kernel/sys.c	2005-01-22 18:52:07 -08:00
@@ -225,7 +225,7 @@ static int set_one_prio(struct task_stru
 		error = -EPERM;
 		goto out;
 	}
-	if (niceval < task_nice(p) && !capable(CAP_SYS_NICE)) {
+	if (niceval < task_nice(p) && !can_nice(p, niceval)) {
 		error = -EACCES;
 		goto out;
 	}

  reply	other threads:[~2005-01-23  2:59 UTC|newest]

Thread overview: 198+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-01-19 22:39 Con Kolivas
2005-01-20  0:16 ` utz lehmann
2005-01-20  0:33   ` Con Kolivas
2005-01-20  4:26     ` utz lehmann
2005-01-20  5:55       ` Con Kolivas
2005-01-20 17:54   ` Alexander Nyberg
2005-01-20 20:27     ` Con Kolivas
2005-01-20  0:53 ` Con Kolivas
2005-01-20  1:32   ` Jack O'Quin
2005-01-20  2:06     ` Con Kolivas
2005-01-20  2:45       ` Jack O'Quin
2005-01-20  4:07         ` Con Kolivas
2005-01-20  4:57           ` Jack O'Quin
2005-01-20  5:05             ` Gene Heskett
2005-01-20  5:59             ` Con Kolivas
2005-01-20  6:35               ` Con Kolivas
2005-01-20 15:19                 ` Jack O'Quin
2005-01-20 15:42                   ` Paul Davis
2005-01-20 16:47                     ` Jack O'Quin
2005-01-20 17:25                       ` Ingo Molnar
2005-01-22  0:09                         ` Jack O'Quin
2005-01-22 16:54                           ` Ingo Molnar
2005-01-22 21:23                             ` Jack O'Quin
2005-01-23  2:06                               ` Nick Piggin
2005-01-23  2:58                                 ` Chris Wright [this message]
2005-01-24  8:59                               ` Ingo Molnar
2005-01-24  9:55                                 ` Paolo Ciarrocchi
2005-01-24 10:29                                   ` Nick Piggin
2005-01-24 10:46                                   ` Ingo Molnar
2005-01-24 12:58                                 ` [patch, 2.6.11-rc2] sched: /proc/sys/kernel/rt_cpu_limit tunable Ingo Molnar
2005-01-24 13:34                                   ` Ingo Molnar
2005-01-24 13:53                                   ` Con Kolivas
2005-01-24 14:01                                     ` [ck] " Con Kolivas
     [not found]                                   ` <87k6q2umla.fsf@sulphur.joq.us>
2005-01-25  6:28                                     ` Nick Piggin
2005-01-25 14:12                                       ` Ingo Molnar
2005-01-25  8:37                                     ` Ingo Molnar
2005-01-25 21:36                                       ` Jack O'Quin
2005-01-25 21:49                                         ` Ingo Molnar
2005-01-25 21:55                                           ` Chris Wright
2005-01-25 21:57                                             ` Ingo Molnar
2005-01-25 22:03                                               ` Chris Wright
2005-01-25 22:08                                                 ` Ingo Molnar
2005-01-25 22:16                                                   ` Chris Wright
2005-01-25 22:44                                                 ` Bill Rugolsky Jr.
2005-01-26  5:12                                           ` Jack O'Quin
2005-01-26  7:27                                             ` Ingo Molnar
2005-01-26 11:02                                               ` [patch, 2.6.11-rc2] sched: RLIMIT_RT_CPU feature, -D7 Ingo Molnar
2005-01-25 13:56                                   ` [patch, 2.6.11-rc2] sched: RLIMIT_RT_CPU_RATIO feature Ingo Molnar
2005-01-25 14:06                                     ` Con Kolivas
2005-01-25 22:18                                     ` Peter Williams
2005-01-25 22:26                                       ` Peter Williams
2005-01-26 10:08                                         ` [patch, 2.6.11-rc2] sched: RLIMIT_RT_CPU feature, -D7 Ingo Molnar
2005-01-26 14:22                                           ` Jack O'Quin
2005-01-26 16:18                                           ` [ck] " Cal
2005-01-26 16:29                                             ` Cal
2005-01-26 16:41                                             ` Jack O'Quin
2005-01-26 17:57                                               ` Cal
2005-01-26 18:57                                                 ` Jack O'Quin
2005-01-27  2:03                                                   ` Cal
2005-01-27  8:51                                                     ` [patch, 2.6.11-rc2] sched: RLIMIT_RT_CPU feature, -D8 Ingo Molnar
2005-01-27 12:48                                                       ` Cal
2005-01-27 16:31                                                       ` Mike Galbraith
2005-01-26 21:28                                           ` [patch, 2.6.11-rc2] sched: RLIMIT_RT_CPU feature, -D7 Peter Williams
2005-01-26 21:44                                           ` Peter Williams
2005-01-26  9:20                                       ` [patch, 2.6.11-rc2] sched: RLIMIT_RT_CPU_RATIO feature Ingo Molnar
2005-01-31 23:03                                         ` Peter Williams
2005-02-01 10:11                                           ` [patch] sys_setpriority() euid semantics fix Ingo Molnar
2005-02-01 21:46                                             ` Peter Williams
2005-01-26  5:24                                     ` [patch, 2.6.11-rc2] sched: RLIMIT_RT_CPU_RATIO feature Jack O'Quin
2005-01-26  7:04                                       ` Ingo Molnar
2005-01-26 22:27                                         ` Jack O'Quin
2005-01-26 23:29                                           ` Nick Piggin
2005-01-27  2:31                                             ` Jack O'Quin
2005-01-27  3:26                                               ` Nick Piggin
2005-01-27  5:15                                                 ` Jack O'Quin
2005-01-27  5:54                                                   ` Nick Piggin
2005-01-27  8:35                                                     ` Ingo Molnar
2005-01-27  8:59                                                       ` Ingo Molnar
2005-01-27 11:35                                                   ` Ingo Molnar
2005-02-02  5:10                                                     ` Jack O'Quin
2005-02-02 11:10                                                       ` Bill Huey
2005-02-02 16:44                                                         ` Jack O'Quin
2005-02-02 21:14                                                           ` Bill Huey
2005-02-02 21:20                                                             ` Bill Huey
2005-02-02 21:21                                                             ` Ingo Molnar
2005-02-02 21:34                                                               ` Bill Huey
2005-02-02 22:59                                                                 ` Paul Davis
2005-02-03  2:46                                                                   ` Bill Huey
2005-02-03 14:20                                                                     ` Paul Davis
2005-02-03 20:19                                                                       ` Con Kolivas
2005-02-03 20:47                                                                         ` Ingo Molnar
2005-02-03 21:15                                                                           ` Paul Davis
2005-02-03 21:28                                                                             ` Ingo Molnar
2005-02-03 21:41                                                                               ` Paul Davis
2005-02-03 21:59                                                                                 ` Ingo Molnar
2005-02-03 22:24                                                                                   ` Paul Davis
2005-02-03 22:26                                                                                     ` Ingo Molnar
2005-02-04  0:36                                                                           ` Tristan Wibberley
2005-02-03 21:48                                                                       ` Peter Williams
2005-02-04 16:41                                                                         ` Jack O'Quin
2005-02-04 21:38                                                                           ` Peter Williams
2005-02-03 21:41                                                                 ` Ingo Molnar
2005-02-03 23:01                                                                   ` Bill Huey
2005-02-11 21:27                                                                   ` Lee Revell
2005-02-02 21:54                                                         ` Peter Williams
2005-02-02 23:03                                                           ` Paul Davis
2005-02-02 23:46                                                             ` Peter Williams
2005-02-03  1:13                                                               ` Jack O'Quin
2005-02-03  3:10                                                                 ` Peter Williams
2005-02-03  3:56                                                                   ` Jack O'Quin
2005-02-03 21:36                                                             ` Ingo Molnar
2005-02-04  0:35                                                               ` Chris Wright
2005-02-04 17:21                                                               ` Jack O'Quin
2005-02-03  2:54                                                           ` Bill Huey
2005-02-03  3:25                                                             ` Peter Williams
2005-02-02 11:37                                                       ` Ingo Molnar
2005-02-02 16:01                                                         ` Jack O'Quin
2005-02-02 18:59                                                       ` Lee Revell
2005-02-02 19:31                                                         ` Jack O'Quin
2005-02-02 20:29                                                           ` Ingo Molnar
2005-02-02 22:45                                                             ` Jack O'Quin
2005-02-02 20:17                                                       ` Ingo Molnar
2005-01-27 20:01                                                   ` Lee Revell
2005-01-28  6:38                                                 ` Ingo Molnar
2005-01-28  8:09                                                   ` Jack O'Quin
2005-01-28  8:08                                             ` Ingo Molnar
2005-01-28  8:35                                               ` Jack O'Quin
2005-01-28  8:40                                                 ` Ingo Molnar
2005-01-28  9:01                                                   ` Jack O'Quin
2005-01-28  9:11                                                     ` Ingo Molnar
2005-01-29  0:44                                                       ` Lee Revell
2005-01-28  9:51                                                     ` Mike Galbraith
2005-01-28 22:16                                                   ` Peter Williams
2005-01-28 22:19                                                     ` Ingo Molnar
2005-01-29  7:02                                                     ` Jack O'Quin
2005-01-31 22:29                                                   ` Bill Davidsen
2005-02-01  0:39                                                     ` Bill Huey
2005-01-25  5:16                                 ` [PATCH]sched: Isochronous class v2 for unprivileged soft rt scheduling Jack O'Quin
2005-01-25 15:09                                   ` Ingo Molnar
2005-01-23 20:48                             ` Jack O'Quin
2005-01-23 22:57                               ` Con Kolivas
2005-01-24  1:06                                 ` Jack O'Quin
2005-01-24  1:09                                   ` Con Kolivas
2005-01-24  4:45                                     ` Jack O'Quin
2005-01-24  4:53                                       ` Jack O'Quin
2005-01-24  6:28                                         ` Jack O'Quin
2005-01-24  6:35                                           ` Con Kolivas
2005-01-24  6:57                                             ` Jack O'Quin
2005-01-24 22:58                                               ` Con Kolivas
2005-01-25  3:55                                                 ` Con Kolivas
2005-01-25 13:05                                                   ` Con Kolivas
2005-01-25 14:38                                                     ` Con Kolivas
2005-01-25 18:36                                                     ` Jack O'Quin
2005-01-25 20:52                                                       ` Rui Nuno Capela
2005-01-24 21:46                                           ` Con Kolivas
2005-01-23  7:38                           ` Jack O'Quin
2005-01-23  7:41                             ` Con Kolivas
2005-01-24  6:30                         ` Jack O'Quin
2005-01-24 20:55                           ` Ingo Molnar
2005-01-20 21:59                       ` Peter Chubb
2005-01-21  0:30                         ` Jack O'Quin
2005-01-22 14:06                         ` Paul Davis
2005-01-20 17:49                     ` ross
2005-01-20 19:07                       ` Lee Revell
2005-01-20 23:17                       ` Con Kolivas
2005-01-21  7:48                         ` Ingo Molnar
2005-02-07  3:09               ` Werner Almesberger
2005-02-07  3:27                 ` Jack O'Quin
2005-02-07  3:27                   ` Con Kolivas
2005-01-20  9:06             ` Rui Nuno Capela
2005-01-20 17:09               ` Rui Nuno Capela
2005-01-20 19:32                 ` Jack O'Quin
2005-01-21  9:18                   ` Rui Nuno Capela
2005-01-21 16:23                     ` Con Kolivas
2005-01-21 16:40                       ` Jack O'Quin
2005-01-22  0:06                 ` Con Kolivas
2005-01-22  6:18                   ` Jack O'Quin
2005-01-22  6:19                     ` Con Kolivas
2005-01-22  6:48                     ` Con Kolivas
2005-01-22  6:50                       ` Con Kolivas
2005-01-22  7:09                         ` Con Kolivas
2005-01-22 20:22                           ` Jack O'Quin
2005-01-23  1:02                             ` Con Kolivas
2005-01-23  3:02                               ` Jack O'Quin
2005-01-23  4:29                                 ` Con Kolivas
2005-01-23  4:46                                   ` Jack O'Quin
2005-01-23  4:50                                     ` Con Kolivas
2005-01-23  7:37                                       ` Mike Galbraith
2005-01-23 13:57                                         ` Paul Davis
2005-01-23  1:31                             ` Con Kolivas
2005-01-23  1:41                               ` Paul Davis
2005-01-23  1:56                                 ` Con Kolivas
2005-01-23  4:50                                   ` Jack O'Quin
2005-01-21 23:30 ` utz lehmann
2005-01-21 23:48   ` Con Kolivas
2005-01-22  0:28     ` utz lehmann
2005-01-22  3:52       ` Con Kolivas
2005-01-22  6:15         ` Jack O'Quin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20050122185847.R24171@build.pdx.osdl.net \
    --to=chrisw@osdl.org \
    --cc=akpm@osdl.org \
    --cc=alexn@dsv.su.se \
    --cc=arjanv@redhat.com \
    --cc=ck@vds.kolivas.org \
    --cc=joq@io.com \
    --cc=kernel@kolivas.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=nickpiggin@yahoo.com.au \
    --cc=paul@linuxaudiosystems.com \
    --cc=rlrevell@joe-job.com \
    --cc=rncbc@rncbc.org \
    --cc=utz@s2y4n2c.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome