Message ID | 20160912041724.16646-3-ruscur@russell.cc (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
On 12/09/16 14:17, Russell Currey wrote: > In eeh_handle_special_event(), eeh_pe_bus_get() is called before calling > eeh_report_failure() on every device under a PE. If a PE was missing a > bus for some reason, the error would occur before reporting failure, even > though eeh_report_failure() doesn't require a bus. > > Fix this by moving the bus retrieval and error check after the > eeh_report_failure() calls. > > Cc: stable #3.10+ > Signed-off-by: Russell Currey <ruscur@russell.cc> Looks good to me. Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
diff --git a/arch/powerpc/kernel/eeh_driver.c b/arch/powerpc/kernel/eeh_driver.c index 29aa8d1..a62be72 100644 --- a/arch/powerpc/kernel/eeh_driver.c +++ b/arch/powerpc/kernel/eeh_driver.c @@ -993,6 +993,8 @@ static void eeh_handle_special_event(void) /* Notify all devices to be down */ eeh_pe_state_clear(pe, EEH_PE_PRI_BUS); + eeh_pe_dev_traverse(pe, + eeh_report_failure, NULL); bus = eeh_pe_bus_get(phb_pe); if (!bus) { pr_err("%s: Cannot find PCI bus for " @@ -1002,8 +1004,6 @@ static void eeh_handle_special_event(void) pe->addr); break; } - eeh_pe_dev_traverse(pe, - eeh_report_failure, NULL); pci_hp_remove_devices(bus); } pci_unlock_rescan_remove();
In eeh_handle_special_event(), eeh_pe_bus_get() is called before calling eeh_report_failure() on every device under a PE. If a PE was missing a bus for some reason, the error would occur before reporting failure, even though eeh_report_failure() doesn't require a bus. Fix this by moving the bus retrieval and error check after the eeh_report_failure() calls. Cc: stable #3.10+ Signed-off-by: Russell Currey <ruscur@russell.cc> --- arch/powerpc/kernel/eeh_driver.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)