sched: Reenable interrupts in do_sched_yield()
[ Upstream commit5.4-rM2-2.2.x-imx-squashed345a957fcc
] do_sched_yield() invokes schedule() with interrupts disabled which is not allowed. This goes back to the pre git era to commit a6efb709806c ("[PATCH] irqlock patch 2.5.27-H6") in the history tree. Reenable interrupts and remove the misleading comment which "explains" it. Fixes:1da177e4c3
("Linux-2.6.12-rc2") Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lkml.kernel.org/r/87r1pt7y5c.fsf@nanos.tec.linutronix.de Signed-off-by: Sasha Levin <sashal@kernel.org>
parent
35975f2e83
commit
52f525f2bd
|
@ -5679,12 +5679,8 @@ static void do_sched_yield(void)
|
||||||
schedstat_inc(rq->yld_count);
|
schedstat_inc(rq->yld_count);
|
||||||
current->sched_class->yield_task(rq);
|
current->sched_class->yield_task(rq);
|
||||||
|
|
||||||
/*
|
|
||||||
* Since we are going to call schedule() anyway, there's
|
|
||||||
* no need to preempt or enable interrupts:
|
|
||||||
*/
|
|
||||||
preempt_disable();
|
preempt_disable();
|
||||||
rq_unlock(rq, &rf);
|
rq_unlock_irq(rq, &rf);
|
||||||
sched_preempt_enable_no_resched();
|
sched_preempt_enable_no_resched();
|
||||||
|
|
||||||
schedule();
|
schedule();
|
||||||
|
|
Loading…
Reference in New Issue