forked from rrcarlosr/Jetpack
54 lines
2.1 KiB
Diff
54 lines
2.1 KiB
Diff
From 113b568dfdde2013a386d4b9a1d8c96a95822c6a Mon Sep 17 00:00:00 2001
|
|
From: Mike Galbraith <umgwanakikbuti@gmail.com>
|
|
Date: Tue, 24 Mar 2015 08:14:49 +0100
|
|
Subject: [PATCH 286/352] hotplug: Use set_cpus_allowed_ptr() in
|
|
sync_unplug_thread()
|
|
|
|
do_set_cpus_allowed() is not safe vs ->sched_class change.
|
|
|
|
crash> bt
|
|
PID: 11676 TASK: ffff88026f979da0 CPU: 22 COMMAND: "sync_unplug/22"
|
|
#0 [ffff880274d25bc8] machine_kexec at ffffffff8103b41c
|
|
#1 [ffff880274d25c18] crash_kexec at ffffffff810d881a
|
|
#2 [ffff880274d25cd8] oops_end at ffffffff81525818
|
|
#3 [ffff880274d25cf8] do_invalid_op at ffffffff81003096
|
|
#4 [ffff880274d25d90] invalid_op at ffffffff8152d3de
|
|
[exception RIP: set_cpus_allowed_rt+18]
|
|
RIP: ffffffff8109e012 RSP: ffff880274d25e48 RFLAGS: 00010202
|
|
RAX: ffffffff8109e000 RBX: ffff88026f979da0 RCX: ffff8802770cb6e8
|
|
RDX: 0000000000000000 RSI: ffffffff81add700 RDI: ffff88026f979da0
|
|
RBP: ffff880274d25e78 R8: ffffffff816112e0 R9: 0000000000000001
|
|
R10: 0000000000000001 R11: 0000000000011940 R12: ffff88026f979da0
|
|
R13: ffff8802770cb6d0 R14: ffff880274d25fd8 R15: 0000000000000000
|
|
ORIG_RAX: ffffffffffffffff CS: 0010 SS: 0018
|
|
#5 [ffff880274d25e60] do_set_cpus_allowed at ffffffff8108e65f
|
|
#6 [ffff880274d25e80] sync_unplug_thread at ffffffff81058c08
|
|
#7 [ffff880274d25ed8] kthread at ffffffff8107cad6
|
|
#8 [ffff880274d25f50] ret_from_fork at ffffffff8152bbbc
|
|
crash> task_struct ffff88026f979da0 | grep class
|
|
sched_class = 0xffffffff816111e0 <fair_sched_class+64>,
|
|
|
|
Signed-off-by: Mike Galbraith <umgwanakikbuti@gmail.com>
|
|
|
|
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|
---
|
|
kernel/cpu.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/kernel/cpu.c b/kernel/cpu.c
|
|
index bb5cde2..b850886c 100644
|
|
--- a/kernel/cpu.c
|
|
+++ b/kernel/cpu.c
|
|
@@ -425,7 +425,7 @@ static int sync_unplug_thread(void *data)
|
|
* we don't want any more work on this CPU.
|
|
*/
|
|
current->flags &= ~PF_NO_SETAFFINITY;
|
|
- do_set_cpus_allowed(current, cpu_present_mask);
|
|
+ set_cpus_allowed_ptr(current, cpu_present_mask);
|
|
migrate_me();
|
|
return 0;
|
|
}
|
|
--
|
|
2.7.4
|
|
|