Commit 521ca5a9 authored by Juan J. Alvarez's avatar Juan J. Alvarez Committed by Michael Ellerman

powerpc/eeh: Fix crashes in eeh_report_resume()

The notify_resume() callback in eeh_ops is NULL on powernv, leading to
crashes:

  NIP (null)
  LR  eeh_report_resume+0x218/0x220
  Call Trace:
   eeh_report_resume+0x1f0/0x220 (unreliable)
   eeh_pe_dev_traverse+0x98/0x170
   eeh_handle_normal_event+0x3f4/0x650
   eeh_handle_event+0x54/0x380
   eeh_event_handler+0x14c/0x210
   kthread+0x168/0x1b0
   ret_from_kernel_thread+0x5c/0xb4

Fix it by adding a check before calling it.

Fixes: 856e1eb9 ("PCI/AER: Add uevents in AER and EEH error/resume")
Signed-off-by: default avatarJuan J. Alvarez <jjalvare@linux.vnet.ibm.com>
Reviewed-by: default avatarBryant G. Ly <bryantly@linux.vnet.ibm.com>
Tested-by: default avatarCarol L. Soto <clsoto@us.ibm.com>
Reviewed-by: default avatarAndrew Donnellan <andrew.donnellan@au1.ibm.com>
Tested-by: default avatarMauro S. M. Rodrigues <maurosr@linux.vnet.ibm.com>
Acked-by: default avatarMichael Neuling <mikey@neuling.org>
[mpe: Rewrite change log]
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 91ab883e
...@@ -384,6 +384,7 @@ static void *eeh_report_resume(void *data, void *userdata) ...@@ -384,6 +384,7 @@ static void *eeh_report_resume(void *data, void *userdata)
eeh_pcid_put(dev); eeh_pcid_put(dev);
pci_uevent_ers(dev, PCI_ERS_RESULT_RECOVERED); pci_uevent_ers(dev, PCI_ERS_RESULT_RECOVERED);
#ifdef CONFIG_PCI_IOV #ifdef CONFIG_PCI_IOV
if (eeh_ops->notify_resume && eeh_dev_to_pdn(edev))
eeh_ops->notify_resume(eeh_dev_to_pdn(edev)); eeh_ops->notify_resume(eeh_dev_to_pdn(edev));
#endif #endif
return NULL; return NULL;
......
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