iucv: fix kernel panic at reboot
The iucv base layer is initialized during the registration of the first iucv handler. If no handler is registered and the iucv_reboot_event() notifier is called, a missing check can cause a kernel panic in iucv_block_cpu(). To solve this issue, check the IRQ masks invoke iucv_block_cpu() for enabled CPUs only. Signed-off-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
0e0d04a867
commit
c0048de29d
1 changed files with 4 additions and 1 deletions
|
@ -831,8 +831,11 @@ static int iucv_reboot_event(struct notifier_block *this,
|
|||
{
|
||||
int i;
|
||||
|
||||
if (cpumask_empty(&iucv_irq_cpumask))
|
||||
return NOTIFY_DONE;
|
||||
|
||||
get_online_cpus();
|
||||
on_each_cpu(iucv_block_cpu, NULL, 1);
|
||||
on_each_cpu_mask(&iucv_irq_cpumask, iucv_block_cpu, NULL, 1);
|
||||
preempt_disable();
|
||||
for (i = 0; i < iucv_max_pathid; i++) {
|
||||
if (iucv_path_table[i])
|
||||
|
|
Loading…
Reference in a new issue