| From 7f095a71d6bc49d7c33ed33ebc26daf4867ee4c8 Mon Sep 17 00:00:00 2001 |
| From: Thomas Pfaff <tpfaff@pcs.com> |
| Date: Fri, 11 Oct 2013 12:42:49 +0200 |
| Subject: [PATCH] genirq: Set the irq thread policy without checking |
| CAP_SYS_NICE |
| |
| In commit ee23871389 ("genirq: Set irq thread to RT priority on |
| creation") we moved the assigment of the thread's priority from the |
| thread's function into __setup_irq(). That function may run in user |
| context for instance if the user opens an UART node and then driver |
| calls requests in the ->open() callback. That user may not have |
| CAP_SYS_NICE and so the irq thread won't run with the SCHED_OTHER |
| policy. |
| |
| This patch uses sched_setscheduler_nocheck() so we omit the CAP_SYS_NICE |
| check which is otherwise required for the SCHED_OTHER policy. |
| |
| Cc: Ivo Sieben <meltedpianoman@gmail.com> |
| Cc: stable@vger.kernel.org |
| Cc: stable-rt@vger.kernel.org |
| Signed-off-by: Thomas Pfaff <tpfaff@pcs.com> |
| [bigeasy: rewrite the changelog] |
| Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> |
| --- |
| kernel/irq/manage.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c |
| index 514bcfd..3e59f95 100644 |
| --- a/kernel/irq/manage.c |
| +++ b/kernel/irq/manage.c |
| @@ -956,7 +956,7 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new) |
| goto out_mput; |
| } |
| |
| - sched_setscheduler(t, SCHED_FIFO, ¶m); |
| + sched_setscheduler_nocheck(t, SCHED_FIFO, ¶m); |
| |
| /* |
| * We keep the reference to the task struct even if |
| -- |
| 1.8.4.rc3 |
| |