Commit c0048de2 authored by Hendrik Brueckner's avatar Hendrik Brueckner Committed by Martin Schwidefsky

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: default avatarHendrik Brueckner <brueckner@linux.vnet.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 0e0d04a8
...@@ -831,8 +831,11 @@ static int iucv_reboot_event(struct notifier_block *this, ...@@ -831,8 +831,11 @@ static int iucv_reboot_event(struct notifier_block *this,
{ {
int i; int i;
if (cpumask_empty(&iucv_irq_cpumask))
return NOTIFY_DONE;
get_online_cpus(); 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(); preempt_disable();
for (i = 0; i < iucv_max_pathid; i++) { for (i = 0; i < iucv_max_pathid; i++) {
if (iucv_path_table[i]) if (iucv_path_table[i])
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment