| From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> |
| Date: Tue, 9 Feb 2016 18:18:01 +0100 |
| Subject: kernel: migrate_disable() do fastpath in atomic & |
| irqs-off |
| |
| With interrupts off it makes no sense to do the long path since we can't |
| leave the CPU anyway. Also we might end up in a recursion with lockdep. |
| |
| Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> |
| --- |
| kernel/sched/core.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/kernel/sched/core.c |
| +++ b/kernel/sched/core.c |
| @@ -3293,7 +3293,7 @@ void migrate_disable(void) |
| { |
| struct task_struct *p = current; |
| |
| - if (in_atomic()) { |
| + if (in_atomic() || irqs_disabled()) { |
| #ifdef CONFIG_SCHED_DEBUG |
| p->migrate_disable_atomic++; |
| #endif |
| @@ -3320,7 +3320,7 @@ void migrate_enable(void) |
| { |
| struct task_struct *p = current; |
| |
| - if (in_atomic()) { |
| + if (in_atomic() || irqs_disabled()) { |
| #ifdef CONFIG_SCHED_DEBUG |
| p->migrate_disable_atomic--; |
| #endif |