aboutsummaryrefslogtreecommitdiff
path: root/net/lapb/lapb_timer.c
diff options
context:
space:
mode:
authorTakao Indoh <[email protected]>2011-03-29 12:35:04 -0400
committerIngo Molnar <[email protected]>2011-06-17 10:17:12 +0200
commitd8ad7d1123a960cc9f276bd499f9325c6f5e1bd1 (patch)
tree0260df1b5b5b1601f56229c7dde54594d2dfebcb /net/lapb/lapb_timer.c
parenteb96c925152fc289311e5d7e956b919e9b60ab53 (diff)
generic-ipi: Fix kexec boot crash by initializing call_single_queue before enabling interrupts
There is a problem that kdump(2nd kernel) sometimes hangs up due to a pending IPI from 1st kernel. Kernel panic occurs because IPI comes before call_single_queue is initialized. To fix the crash, rename init_call_single_data() to call_function_init() and call it in start_kernel() so that call_single_queue can be initialized before enabling interrupts. The details of the crash are: (1) 2nd kernel boots up (2) A pending IPI from 1st kernel comes when irqs are first enabled in start_kernel(). (3) Kernel tries to handle the interrupt, but call_single_queue is not initialized yet at this point. As a result, in the generic_smp_call_function_single_interrupt(), NULL pointer dereference occurs when list_replace_init() tries to access &q->list.next. Therefore this patch changes the name of init_call_single_data() to call_function_init() and calls it before local_irq_enable() in start_kernel(). Signed-off-by: Takao Indoh <[email protected]> Reviewed-by: WANG Cong <[email protected]> Acked-by: Neil Horman <[email protected]> Acked-by: Vivek Goyal <[email protected]> Acked-by: Peter Zijlstra <[email protected]> Cc: Milton Miller <[email protected]> Cc: Jens Axboe <[email protected]> Cc: Paul E. McKenney <[email protected]> Cc: [email protected] Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Ingo Molnar <[email protected]>
Diffstat (limited to 'net/lapb/lapb_timer.c')
0 files changed, 0 insertions, 0 deletions