]> git.baikalelectronics.ru Git - kernel.git/commit
sched/fair: Reset se-depth when task switched to FAIR
authorMichael wang <wangyun@linux.vnet.ibm.com>
Thu, 20 Feb 2014 03:14:53 +0000 (11:14 +0800)
committerThomas Gleixner <tglx@linutronix.de>
Fri, 21 Feb 2014 20:43:17 +0000 (21:43 +0100)
commitf21fd01d061ed350eae2c8cf3257d0e962813d23
treef9957db29515004d0dae2af3f48af6607f88af73
parentdd3fa8d6a15edb804114ced1d0c9ab4906d70b13
sched/fair: Reset se-depth when task switched to FAIR

Sasha reported:

[  522.645288] BUG: unable to handle kernel NULL pointer dereference at ...
[  522.646271] IP: [<ffffffff81186c6f>] check_preempt_wakeup+0x11f/0x210
...
[  522.650021] Call Trace:
[  522.650021]  <IRQ>
[  522.650021]  [<ffffffff8117361d>] check_preempt_curr+0x3d/0xb0
[  522.650021]  [<ffffffff81175d88>] ttwu_do_wakeup+0x18/0x130
...

which was caused by the se-depth changed during the time when task is not
FAIR, and we will use the wrong depth value after it switched back to FAIR.

This patch reset the depth at the time when task switched to FAIR, make sure
that we always have the correct value when task is FAIR.

Cc: Ingo Molnar <mingo@kernel.org>
Reported-by: Sasha Levin <sasha.levin@oracle.com>
Tested-by: Sasha Levin <sasha.levin@oracle.com>
Signed-off-by: Michael Wang <wangyun@linux.vnet.ibm.com>
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/5305732D.70001@linux.vnet.ibm.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/sched/fair.c