Files
android_kernel_xiaomi_sm8450/arch/x86/include/asm
Oleg Nesterov 009f60e276 sched: stop the unbound recursion in preempt_schedule_context()
preempt_schedule_context() does preempt_enable_notrace() at the end
and this can call the same function again; exception_exit() is heavy
and it is quite possible that need-resched is true again.

1. Change this code to dec preempt_count() and check need_resched()
   by hand.

2. As Linus suggested, we can use the PREEMPT_ACTIVE bit and avoid
   the enable/disable dance around __schedule(). But in this case
   we need to move into sched/core.c.

3. Cosmetic, but x86 forgets to declare this function. This doesn't
   really matter because it is only called by asm helpers, still it
   make sense to add the declaration into asm/preempt.h to match
   preempt_schedule().

Reported-by: Sasha Levin <sasha.levin@oracle.com>
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Alexander Graf <agraf@suse.de>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Christoph Lameter <cl@linux.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Peter Anvin <hpa@zytor.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: Chuck Ebbert <cebbert.lkml@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Link: http://lkml.kernel.org/r/20141005202322.GB27962@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2014-10-28 10:46:05 +01:00
..
2014-08-26 13:45:50 -04:00
2009-01-29 14:16:51 +01:00
2012-03-28 18:11:12 +01:00
2014-08-26 13:45:49 -04:00
2011-05-02 17:24:48 +02:00
2014-10-03 22:15:56 +01:00
2014-05-02 11:34:17 -07:00
2012-03-28 18:11:12 +01:00
2010-02-16 21:22:26 -08:00
2014-03-04 21:47:51 +01:00
2011-04-18 09:26:48 -07:00
2012-03-20 21:48:30 +08:00
2014-05-08 08:15:34 +02:00
2013-08-05 06:35:33 -07:00
2013-02-03 18:16:27 -05:00
2009-08-27 00:35:56 +02:00
2014-04-07 16:36:15 -07:00
2010-10-26 16:52:08 -07:00
2012-06-25 13:48:30 +02:00
2014-09-22 13:35:52 +02:00
2009-06-13 15:37:30 +02:00
2011-07-22 14:39:50 +09:30
2013-04-22 15:45:03 +09:30
2010-06-09 11:12:36 +02:00
2014-02-27 08:07:39 -08:00
2014-09-01 10:15:31 +02:00
2011-03-15 15:34:15 -07:00
2012-02-20 12:52:05 -08:00
2014-06-06 16:08:11 -07:00
2009-06-15 12:40:02 +02:00
2014-06-04 16:53:57 -07:00
2014-04-18 14:20:46 +02:00
2012-03-28 18:11:12 +01:00