https://github.com/torvalds/linux
Revision 093e5840ae76f1082633503964d035f40ed0216d authored by Sebastian Andrzej Siewior on 21 December 2015, 17:17:10 UTC, committed by Ingo Molnar on 06 January 2016, 10:01:07 UTC
In the following commit: 7675104990ed ("sched: Implement lockless wake-queues") we gained lockless wake-queues. The -RT kernel managed to lockup itself with those. There could be multiple attempts for task X to enqueue it for a wakeup _even_ if task X is already running. The reason is that task X could be runnable but not yet on CPU. The the task performing the wakeup did not leave the CPU it could performe multiple wakeups. With the proper timming task X could be running and enqueued for a wakeup. If this happens while X is performing a fork() then its its child will have a !NULL `wake_q` member copied. This is not a problem as long as the child task does not participate in lockless wakeups :) Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Davidlohr Bueso <dbueso@suse.de> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Thomas Gleixner <tglx@linutronix.de> Fixes: 7675104990ed ("sched: Implement lockless wake-queues") Link: http://lkml.kernel.org/r/20151221171710.GA5499@linutronix.de Signed-off-by: Ingo Molnar <mingo@kernel.org>
1 parent be958bd
Tip revision: 093e5840ae76f1082633503964d035f40ed0216d authored by Sebastian Andrzej Siewior on 21 December 2015, 17:17:10 UTC
sched/core: Reset task's lockless wake-queues on fork()
sched/core: Reset task's lockless wake-queues on fork()
Tip revision: 093e584
File | Mode | Size |
---|---|---|
Kconfig | -rw-r--r-- | 23.1 KB |
Makefile | -rw-r--r-- | 2.5 KB |
act_api.c | -rw-r--r-- | 23.8 KB |
act_bpf.c | -rw-r--r-- | 8.8 KB |
act_connmark.c | -rw-r--r-- | 4.7 KB |
act_csum.c | -rw-r--r-- | 12.9 KB |
act_gact.c | -rw-r--r-- | 5.1 KB |
act_ipt.c | -rw-r--r-- | 7.3 KB |
act_mirred.c | -rw-r--r-- | 6.7 KB |
act_nat.c | -rw-r--r-- | 6.7 KB |
act_pedit.c | -rw-r--r-- | 5.6 KB |
act_police.c | -rw-r--r-- | 9.0 KB |
act_simple.c | -rw-r--r-- | 4.6 KB |
act_skbedit.c | -rw-r--r-- | 5.2 KB |
act_vlan.c | -rw-r--r-- | 4.6 KB |
cls_api.c | -rw-r--r-- | 14.4 KB |
cls_basic.c | -rw-r--r-- | 6.8 KB |
cls_bpf.c | -rw-r--r-- | 11.8 KB |
cls_cgroup.c | -rw-r--r-- | 4.8 KB |
cls_flow.c | -rw-r--r-- | 16.4 KB |
cls_flower.c | -rw-r--r-- | 18.8 KB |
cls_fw.c | -rw-r--r-- | 9.5 KB |
cls_route.c | -rw-r--r-- | 14.1 KB |
cls_rsvp.c | -rw-r--r-- | 761 bytes |
cls_rsvp.h | -rw-r--r-- | 17.4 KB |
cls_rsvp6.c | -rw-r--r-- | 768 bytes |
cls_tcindex.c | -rw-r--r-- | 14.4 KB |
cls_u32.c | -rw-r--r-- | 24.0 KB |
em_canid.c | -rw-r--r-- | 5.5 KB |
em_cmp.c | -rw-r--r-- | 2.1 KB |
em_ipset.c | -rw-r--r-- | 3.1 KB |
em_meta.c | -rw-r--r-- | 22.9 KB |
em_nbyte.c | -rw-r--r-- | 1.9 KB |
em_text.c | -rw-r--r-- | 3.7 KB |
em_u32.c | -rw-r--r-- | 1.4 KB |
ematch.c | -rw-r--r-- | 14.6 KB |
sch_api.c | -rw-r--r-- | 45.2 KB |
sch_atm.c | -rw-r--r-- | 19.1 KB |
sch_blackhole.c | -rw-r--r-- | 1.0 KB |
sch_cbq.c | -rw-r--r-- | 47.2 KB |
sch_choke.c | -rw-r--r-- | 14.0 KB |
sch_codel.c | -rw-r--r-- | 7.8 KB |
sch_drr.c | -rw-r--r-- | 11.4 KB |
sch_dsmark.c | -rw-r--r-- | 11.5 KB |
sch_fifo.c | -rw-r--r-- | 4.1 KB |
sch_fq.c | -rw-r--r-- | 20.7 KB |
sch_fq_codel.c | -rw-r--r-- | 16.3 KB |
sch_generic.c | -rw-r--r-- | 23.6 KB |
sch_gred.c | -rw-r--r-- | 14.3 KB |
sch_hfsc.c | -rw-r--r-- | 40.9 KB |
sch_hhf.c | -rw-r--r-- | 21.2 KB |
sch_htb.c | -rw-r--r-- | 42.6 KB |
sch_ingress.c | -rw-r--r-- | 2.5 KB |
sch_mq.c | -rw-r--r-- | 5.8 KB |
sch_mqprio.c | -rw-r--r-- | 10.5 KB |
sch_multiq.c | -rw-r--r-- | 9.3 KB |
sch_netem.c | -rw-r--r-- | 26.3 KB |
sch_pie.c | -rw-r--r-- | 15.5 KB |
sch_plug.c | -rw-r--r-- | 6.5 KB |
sch_prio.c | -rw-r--r-- | 8.4 KB |
sch_qfq.c | -rw-r--r-- | 42.6 KB |
sch_red.c | -rw-r--r-- | 8.8 KB |
sch_sfb.c | -rw-r--r-- | 16.4 KB |
sch_sfq.c | -rw-r--r-- | 21.7 KB |
sch_tbf.c | -rw-r--r-- | 13.9 KB |
sch_teql.c | -rw-r--r-- | 12.0 KB |
Computing file changes ...