| From 4452cbf2e5140e4efd5a9b94dbbb45c4c5ce56c9 Mon Sep 17 00:00:00 2001 |
| From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> |
| Date: Tue, 9 Feb 2016 18:17:18 +0100 |
| Subject: [PATCH 288/351] kernel: softirq: unlock with irqs on |
| X-NVConfidentiality: public |
| |
| We unlock the lock while the interrupts are off. This isn't a problem |
| now but will get because the migrate_disable() + enable are not |
| symmetrical in regard to the status of interrupts. |
| |
| Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> |
| --- |
| kernel/softirq.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| diff --git a/kernel/softirq.c b/kernel/softirq.c |
| index d1e999e74d23..2ca63cc1469e 100644 |
| --- a/kernel/softirq.c |
| +++ b/kernel/softirq.c |
| @@ -563,8 +563,10 @@ static void do_current_softirqs(void) |
| do_single_softirq(i); |
| } |
| softirq_clr_runner(i); |
| - unlock_softirq(i); |
| WARN_ON(current->softirq_nestcnt != 1); |
| + local_irq_enable(); |
| + unlock_softirq(i); |
| + local_irq_disable(); |
| } |
| } |
| |
| -- |
| 2.10.1 |
| |