linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Chris Wright <chrisw@osdl.org>
To: Christoph Hellwig <hch@infradead.org>,
	Andrew Morton <akpm@osdl.org>, Lee Revell <rlrevell@joe-job.com>,
	paul@linuxaudiosystems.com, arjanv@redhat.com, mingo@elte.hu,
	chrisw@osdl.org, alan@lxorguk.ukuu.org.uk, joq@io.com,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] [request for inclusion] Realtime LSM
Date: Fri, 7 Jan 2005 14:29:20 -0800	[thread overview]
Message-ID: <20050107142920.K2357@build.pdx.osdl.net> (raw)
In-Reply-To: <20050107221059.GA17392@infradead.org>; from hch@infradead.org on Fri, Jan 07, 2005 at 10:10:59PM +0000

* Christoph Hellwig (hch@infradead.org) wrote:
> On Fri, Jan 07, 2005 at 01:49:41PM -0800, Andrew Morton wrote:
> > Chris Wright <chrisw@osdl.org> wrote:
> > >
> > > ...
> > > Last I checked they could be controlled separately in that module.  It
> > > has been suggested (by me and others) that one possible solution would
> > > be to expand it to be generic for all caps.
> > 
> > Maybe this is the way?
> 
> It's at least not as bad as the current hack (when properly done in
> the capabilities modules instead of adding one ontop).
> 
> I must say I'm not exactly happy with that idea still.  It ties the
> privilegues we have been separating from a special uid (0) to filesystem
> permissions again.  It's not nessecarily a bad idea per, but it doesn't
> really fit into the model we've been working to.  I'd expect quite a few
> unpleasant devices when a user detects that the distibution had been
> binding various capabilities to uids/gids behinds his back.

I agree, it's still a hack, just a generic and complete hack ;-)

> So to make forward progress I'd like the audio people to confirm whether
> the mlock bits in 2.6.9+ do help that half of their requirement first

It sure should, but I guess they can reply on that.

> (and if not find a way to fix it) and then tackle the scheduling part.
> For that one I really wonder whether the combination of the now actually
> working nicelevels (see Mingo's post) and a simple wrapper for the really
> high requirements cases doesn't work.

I saw Jack (I think) post some numbers showing that it wasn't enough.
What about making priority level protected via rlimit?

Here's an uncompiled, untested patch doing that (probably has some math
error or logic hole in it, but idea seems sound enough).  I think it has
at least one problem, where nice 19 process, could renice itself back to
0.  And it doesn't really handle the different scheduling policies,
other than implicit 40 - 139 being used for SCHED_FIFO/SCHED_RR.

It takes the 140 priority levels (0-139), inverts their priority
order, and then uses that number as the basis for the rlimit (so that a
larger rlimit means higher priority, to fall inline with normal rlimit
semantics).  Defaults to 19 (which should be niceval of 0).  And allows
CAP_SYS_NICE to continue to override if the rlimit is too low.

===== kernel/sched.c 1.386 vs edited =====
--- 1.386/kernel/sched.c	2005-01-04 18:48:21 -08:00
+++ edited/kernel/sched.c	2005-01-07 14:23:32 -08:00
@@ -3009,12 +3009,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;
 
@@ -3024,6 +3020,11 @@ asmlinkage long sys_nice(int increment)
 	if (nice > 19)
 		nice = 19;
 
+	if ((MAX_PRIO-1) - NICE_TO_PRIO(nice) > 
+	    current->signal->rlim[RLIMIT_PRIO].rlim_cur &&
+	    !capable(CAP_SYS_NICE))
+		return -EPERM;
+
 	retval = security_task_setnice(current, nice);
 	if (retval)
 		return retval;
@@ -3057,6 +3058,15 @@ int task_nice(const task_t *p)
 }
 
 /**
+ * nice_to_prio - return priority of give nice value
+ * @nice: nice value
+ */
+int nice_to_prio(const int nice)
+{
+	return NICE_TO_PRIO(nice);
+}
+
+/**
  * idle_cpu - is a given cpu idle currently?
  * @cpu: the processor in question.
  */
@@ -3140,6 +3150,7 @@ recheck:
 
 	retval = -EPERM;
 	if ((policy == SCHED_FIFO || policy == SCHED_RR) &&
+	    lp.sched_priority+40 > p->signal->rlim[RLIMIT_PRIO].rlim_cur && 
 	    !capable(CAP_SYS_NICE))
 		goto out_unlock;
 	if ((current->euid != p->euid) && (current->euid != p->uid) &&
===== kernel/sys.c 1.102 vs edited =====
--- 1.102/kernel/sys.c	2005-01-06 23:25:46 -08:00
+++ edited/kernel/sys.c	2005-01-07 14:13:37 -08:00
@@ -225,7 +225,9 @@ static int set_one_prio(struct task_stru
 		error = -EPERM;
 		goto out;
 	}
-	if (niceval < task_nice(p) && !capable(CAP_SYS_NICE)) {
+	if ((MAX_PRIO-1) - nice_to_prio(niceval) > 
+	    p->signal->rlim[RLIMIT_PRIO].rlim_cur &&
+	    !capable(CAP_SYS_NICE)) {
 		error = -EACCES;
 		goto out;
 	}
===== include/asm-i386/resource.h 1.5 vs edited =====
--- 1.5/include/asm-i386/resource.h	2004-08-23 01:15:26 -07:00
+++ edited/include/asm-i386/resource.h	2005-01-07 13:55:37 -08:00
@@ -18,8 +18,9 @@
 #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_PRIO	13		/* maximum scheduling priority */
 
-#define RLIM_NLIMITS	13
+#define RLIM_NLIMITS	14
 
 
 /*
@@ -45,6 +46,7 @@
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 	{ MAX_SIGPENDING, MAX_SIGPENDING },		\
 	{ MQ_BYTES_MAX, MQ_BYTES_MAX },			\
+	{           19,	            19 },		\
 }
 
 #endif /* __KERNEL__ */
===== include/linux/sched.h 1.280 vs edited =====
--- 1.280/include/linux/sched.h	2005-01-04 18:48:20 -08:00
+++ edited/include/linux/sched.h	2005-01-07 14:14:16 -08:00
@@ -760,6 +760,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 nice_to_prio(const int nice);
 extern int task_curr(const task_t *p);
 extern int idle_cpu(int cpu);
 

  parent reply	other threads:[~2005-01-07 22:31 UTC|newest]

Thread overview: 266+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-12-30  2:43 [PATCH] [request for inclusion] Realtime LSM Lee Revell
2005-01-03 14:03 ` Christoph Hellwig
2005-01-03 14:15   ` Arjan van de Ven
2005-01-07 16:40     ` Lee Revell
2005-01-04 18:16   ` Lee Revell
2005-01-04 18:20     ` Christoph Hellwig
2005-01-04 18:55       ` Jack O'Quin
2005-01-04 18:59         ` Lee Revell
2005-01-05  0:01           ` Alan Cox
2005-01-05  1:28             ` Lee Revell
2005-01-05  1:30             ` Lee Revell
2005-01-05  1:50             ` Chris Wright
2005-01-05  1:55               ` Lee Revell
2005-01-05  2:05                 ` Chris Wright
2005-01-05  2:58                   ` Kyle Moffett
2005-01-05  3:45                     ` Chris Wright
2005-01-05  4:06                   ` Jack O'Quin
2005-01-05 11:52                 ` Ingo Molnar
2005-01-05 15:19                   ` Lee Revell
2005-01-05 15:21                   ` Lee Revell
2005-01-07 12:56                     ` Paul Davis
2005-01-07 13:04                       ` Christoph Hellwig
2005-01-07 14:16                         ` Paul Davis
2005-01-07 14:26                           ` Arjan van de Ven
2005-01-07 14:38                             ` Paul Davis
2005-01-07 14:42                               ` Arjan van de Ven
2005-01-07 15:27                                 ` Paul Davis
2005-01-07 15:33                                   ` Arjan van de Ven
2005-01-07 15:41                                     ` Paul Davis
2005-01-07 16:03                                       ` Arjan van de Ven
2005-01-07 16:20                                         ` Takashi Iwai
2005-01-08  5:36                                           ` Con Kolivas
2005-01-08  6:21                                             ` Jack O'Quin
2005-01-07 16:20                                         ` Paul Davis
2005-01-07 21:12                                           ` Lee Revell
2005-01-07 21:49                                             ` Andrew Morton
2005-01-07 22:07                                               ` Valdis.Kletnieks
2005-01-07 22:36                                                 ` Chris Wright
2005-01-07 23:01                                                   ` Valdis.Kletnieks
2005-01-07 23:20                                                     ` Andrew Morton
2005-01-07 23:34                                                       ` Valdis.Kletnieks
2005-01-10 21:05                                                       ` Matt Mackall
2005-01-07 22:10                                               ` Christoph Hellwig
2005-01-07 22:26                                                 ` Paul Davis
2005-01-07 22:29                                                 ` Chris Wright [this message]
2005-01-08  6:12                                                   ` Jack O'Quin
2005-01-08 16:56                                                     ` ross
2005-01-08 18:25                                                       ` Christoph Hellwig
2005-01-08 22:20                                                       ` Lee Revell
2005-01-08 22:27                                                         ` Andreas Steinmetz
2005-01-08 22:14                                                     ` Lee Revell
2005-01-10 21:20                                                     ` Matt Mackall
2005-01-11 13:05                                                       ` Paul Davis
2005-01-11 16:28                                                         ` Jack O'Quin
2005-01-11 18:59                                                           ` Matt Mackall
2005-01-11 20:47                                                           ` utz lehmann
2005-01-11 21:07                                                           ` Lee Revell
2005-01-11 19:17                                                         ` Matt Mackall
2005-01-11 19:42                                                           ` Jack O'Quin
2005-01-11 20:50                                                           ` Chris Wright
2005-01-11 20:58                                                             ` Ingo Molnar
2005-01-11 21:14                                                               ` Chris Wright
2005-01-11 21:27                                                                 ` Ingo Molnar
2005-01-11 22:13                                                                   ` Chris Wright
2005-01-11 22:26                                                                     ` Con Kolivas
2005-01-12  3:21                                                                   ` Jack O'Quin
2005-01-12  4:29                                                                     ` Chris Wright
2005-01-13  5:44                                                                   ` Jack O'Quin
2005-01-13  6:34                                                                     ` Matt Mackall
2005-01-13 19:17                                                                       ` Jack O'Quin
2005-01-14 20:52                                                                         ` Lee Revell
2005-01-15  0:42                                                                           ` Jack O'Quin
2005-01-15  2:19                                                                             ` Randy.Dunlap
2005-01-15  4:06                                                                               ` Jack O'Quin
2005-01-15 13:49                                                                     ` Ingo Molnar
2005-01-15 23:02                                                                       ` Jack O'Quin
2005-01-15 23:38                                                                         ` Jack O'Quin
2005-01-16 23:13                                                                           ` Ingo Molnar
2005-01-16 23:57                                                                             ` Jack O'Quin
2005-01-17  9:17                                                                               ` Sytse Wielinga
2005-01-17 14:36                                                                                 ` Ingo Molnar
2005-01-17 10:06                                                                               ` Ingo Molnar
2005-01-18  5:02                                                                                 ` Jack O'Quin
2005-01-18  8:02                                                                                   ` Ingo Molnar
2005-01-18 17:05                                                                                     ` Jack O'Quin
2005-01-19  8:24                                                                                       ` Ingo Molnar
2005-01-19 14:39                                                                                         ` Ingo Molnar
2005-01-19 17:45                                                                                           ` Jack O'Quin
2005-01-19 18:32                                                                                             ` Matt Mackall
2005-01-20  8:07                                                                                               ` Ingo Molnar
2005-01-20  8:05                                                                                             ` Ingo Molnar
2005-01-11 14:30                                                       ` Jack O'Quin
2005-01-11 19:50                                                         ` Matt Mackall
2005-01-11 19:57                                                           ` Jack O'Quin
2005-01-11 20:05                                                             ` Matt Mackall
2005-01-11 20:29                                                               ` Lee Revell
2005-01-11 20:47                                                                 ` Chris Wright
2005-01-11 21:10                                                                   ` Lee Revell
2005-01-11 21:20                                                                     ` Chris Wright
2005-01-11 21:28                                                                   ` Matt Mackall
2005-01-11 21:38                                                                     ` Lee Revell
2005-01-11 21:41                                                                       ` Arjan van de Ven
2005-01-11 22:51                                                                         ` Paul Davis
2005-01-11 23:05                                                                           ` Chris Wright
2005-01-12  1:43                                                                             ` Jack O'Quin
2005-01-12  7:49                                                                               ` Arjan van de Ven
2005-01-12 21:12                                                                                 ` Lee Revell
2005-01-13  0:44                                                                                 ` Jack O'Quin
2005-01-13  7:28                                                                                   ` Arjan van de Ven
2005-01-13 21:04                                                                                     ` Jack O'Quin
2005-01-13 21:07                                                                                       ` Arjan van de Ven
2005-01-13 21:25                                                                                         ` Lee Revell
2005-01-13 21:43                                                                                           ` Arjan van de Ven
2005-01-13 23:31                                                                                             ` Jack O'Quin
2005-01-14  0:33                                                                                               ` Chris Wright
2005-01-14  0:50                                                                                               ` Con Kolivas
2005-01-14  1:20                                                                                                 ` Matt Mackall
2005-01-14  1:27                                                                                                   ` Con Kolivas
2005-01-14 17:20                                                                                               ` Mike Galbraith
2005-01-15  1:14                                                                                                 ` Jack O'Quin
2005-01-15  8:06                                                                                                   ` Mike Galbraith
2005-01-15 23:48                                                                                                     ` Jack O'Quin
2005-01-14  2:05                                                                                           ` utz lehmann
2005-01-14  2:08                                                                                             ` Con Kolivas
2005-01-14  2:23                                                                                               ` Andrew Morton
2005-01-14  2:35                                                                                               ` utz lehmann
2005-01-14  2:42                                                                                                 ` Con Kolivas
2005-01-14  3:20                                                                                                   ` Andrew Morton
2005-01-14  3:28                                                                                                     ` utz lehmann
2005-01-14  3:26                                                                                                   ` utz lehmann
2005-01-14  2:24                                                                                             ` Nick Piggin
2005-01-14  2:40                                                                                               ` Paul Davis
2005-01-14  2:57                                                                                                 ` Nick Piggin
2005-01-14  3:12                                                                                                 ` Andrew Morton
2005-01-14  3:18                                                                                                   ` Con Kolivas
2005-01-14  3:30                                                                                                     ` Paul Davis
2005-01-14  3:38                                                                                                       ` Con Kolivas
2005-01-14  3:51                                                                                                         ` Paul Davis
2005-01-14  4:00                                                                                                           ` Con Kolivas
2005-01-14  4:16                                                                                                             ` Nick Piggin
2005-01-14  4:04                                                                                                         ` Nick Piggin
2005-01-14  3:31                                                                                                     ` Nick Piggin
2005-01-14  3:34                                                                                                       ` Paul Davis
2005-01-14  4:11                                                                                                       ` Con Kolivas
2005-01-14  4:23                                                                                                         ` Nick Piggin
2005-01-14  4:45                                                                                                           ` Paul Davis
2005-01-14  5:14                                                                                                             ` Nick Piggin
2005-01-14  9:21                                                                                                       ` Will Dyson
2005-01-14  9:54                                                                                                         ` Nick Piggin
2005-01-14  6:57                                                                                                   ` Matt Mackall
2005-01-14  7:04                                                                                                     ` Andrew Morton
2005-01-14  7:55                                                                                                       ` Chris Wright
2005-01-14 20:10                                                                                                     ` Chris Wright
2005-01-14 20:55                                                                                                       ` Matt Mackall
2005-01-14 23:04                                                                                                         ` Chris Wright
2005-01-15  0:58                                                                                                           ` Matt Mackall
2005-01-11 22:05                                                                       ` Matt Mackall
2005-01-11 21:42                                                                     ` Chris Wright
2005-01-11 22:16                                                                       ` Matt Mackall
2005-01-11 22:21                                                                         ` Chris Wright
2005-01-11 22:36                                                                           ` utz lehmann
2005-01-11 22:41                                                                             ` Chris Wright
2005-01-11 22:17                                                                     ` utz
2005-01-11 22:48                                                                     ` Paul Davis
2005-01-11 23:06                                                                       ` Matt Mackall
2005-01-12  2:13                                                                         ` Paul Davis
2005-01-12 19:09                                                                           ` Matt Mackall
2005-01-12 21:25                                                                             ` Lee Revell
2005-01-11 20:19                                                             ` Chris Friesen
2005-01-11 22:45                                                           ` Paul Davis
2005-01-11 21:21                                                     ` Ingo Molnar
2005-01-12  2:10                                                       ` Jack O'Quin
2005-01-15  4:56                                                       ` Jack O'Quin
2005-01-15 14:43                                                         ` Ingo Molnar
2005-01-15 23:10                                                           ` Jack O'Quin
2005-01-16  1:48                                                             ` Jack O'Quin
2005-01-16  4:30                                                               ` Jack O'Quin
2005-01-16 23:22                                                                 ` Ingo Molnar
2005-01-07 23:00                                                 ` Lee Revell
2005-01-07 22:22                                               ` Paul Davis
2005-01-07 22:44                                               ` Andreas Steinmetz
2005-01-07 16:03                                       ` Martin Mares
2005-01-07 16:22                                         ` Paul Davis
2005-01-08 13:04                                           ` Paul Jakma
2005-01-07 14:47                               ` Christoph Hellwig
2005-01-07 15:26                                 ` Paul Davis
2005-01-07 16:08                                   ` Martin Mares
2005-01-07 16:14                                     ` Paul Davis
2005-01-07 16:29                                       ` Martin Mares
2005-01-07 16:36                                         ` Paul Davis
2005-01-07 17:06                                           ` Martin Mares
2005-01-07 17:29                                             ` Chris Wright
2005-01-07 17:32                                               ` Martin Mares
2005-01-07 17:38                                                 ` Chris Wright
2005-01-07 19:55                                                 ` Jack O'Quin
2005-01-07 16:37                                         ` Takashi Iwai
2005-01-07 16:41                                           ` Martin Mares
2005-01-07 17:53                                   ` Chris Wright
2005-01-07 18:01                             ` Chris Wright
2005-01-05 18:18                   ` Jack O'Quin
2005-01-05  4:04             ` Jack O'Quin
2005-01-05 11:25           ` Christoph Hellwig
2005-01-05 17:32             ` Lee Revell
2005-01-05 19:11               ` Christoph Hellwig
2005-01-05 11:20         ` Christoph Hellwig
2005-01-04 18:57       ` Lee Revell
2005-01-05  1:35         ` Andreas Steinmetz
2005-01-05  4:18           ` Alan Cox
2005-01-05  5:50             ` Andrew Morton
2005-01-05 12:06               ` Herbert Poetzl
2005-01-07  1:13                 ` Matt Mackall
2005-01-07  1:55                   ` Alan Cox
2005-01-07 20:05                     ` Matt Mackall
2005-01-05 20:09               ` Olaf Dietsche
2005-01-07  1:18             ` Matt Mackall
2005-01-07  2:36               ` Lee Revell
2005-01-07  5:54               ` Jack O'Quin
2005-01-07 20:02                 ` Matt Mackall
2005-01-07 20:21                   ` Chris Wright
2005-01-07 20:27                   ` Jack O'Quin
2005-01-07 20:46                     ` Matt Mackall
2005-01-07 20:55                       ` Lee Revell
2005-01-07 21:20                         ` Matt Mackall
2005-01-07 21:29                           ` Chris Wright
2005-01-07 20:45                   ` Lee Revell
2005-01-05 11:39           ` Christoph Hellwig
2005-01-05 17:35             ` Lee Revell
2005-01-05 19:11               ` Christoph Hellwig
2005-01-05 11:24         ` Christoph Hellwig
     [not found] <20050112185258.GG2940@waste.org>
2005-01-12 21:16 ` Paul Davis
2005-03-08  3:50   ` Andrew Morton
2005-03-08  3:55     ` Christoph Hellwig
2005-03-08  4:16       ` Andrew Morton
2005-03-08  4:22         ` Ingo Molnar
2005-03-08  4:28           ` Andrew Morton
2005-03-08  4:32             ` Christoph Hellwig
2005-03-08  4:47               ` Matt Mackall
2005-03-08  4:58                 ` Chris Wright
2005-03-08 18:55               ` Lee Revell
2005-03-08 19:11                 ` Paul Davis
2005-03-08 20:29                   ` Andrew Morton
2005-03-08 21:20                 ` Christoph Hellwig
2005-03-08 21:34                   ` Lee Revell
2005-03-08 23:55                     ` James Morris
2005-03-08  5:19           ` Jack O'Quin
2005-03-08  4:33     ` Matt Mackall
2005-03-08  4:40       ` Andrew Morton
2005-03-08  5:30         ` Jack O'Quin
2005-03-08  6:33           ` Matt Mackall
2005-03-09  3:39             ` Jack O'Quin
2005-03-09  3:44               ` Matt Mackall
2005-03-09  4:04                 ` Jack O'Quin
2005-03-10 14:01           ` Pavel Machek
2005-03-08  5:40         ` Peter Williams
2005-03-08  5:49           ` Ingo Molnar
2005-03-08  6:28             ` Peter Williams
2005-03-08  6:40               ` Chris Wright
2005-03-08  6:42                 ` Ingo Molnar
2005-03-08  6:00           ` Chris Wright
2005-03-08  6:18           ` Matt Mackall
2005-03-08  5:38       ` Ingo Molnar
2005-03-08  6:45       ` Chris Wright
2005-03-08  6:49         ` Matt Mackall
2005-03-08  6:55       ` Andrew Morton
2005-03-08  8:45         ` Matt Mackall
2005-03-08 19:17       ` utz lehmann

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=20050107142920.K2357@build.pdx.osdl.net \
    --to=chrisw@osdl.org \
    --cc=akpm@osdl.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=arjanv@redhat.com \
    --cc=hch@infradead.org \
    --cc=joq@io.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=paul@linuxaudiosystems.com \
    --cc=rlrevell@joe-job.com \
    /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;
as well as URLs for NNTP newsgroup(s).