Message ID | 1466743750-28332-1-git-send-email-gwshan@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
On Fri, 2016-24-06 at 04:49:02 UTC, Gavin Shan wrote: > When calling eeh_rmv_device() in eeh_reset_device() for partial > hotplug case, @rmv_data instead of its address is the proper > argument. Otherwise, the stack frame is corrupted when writing > to @rmv_data (actually its address) in eeh_rmv_device(). It > results in kernel crash as observed. > > This fixes the issue by passing @rmv_data, not its address to > eeh_rmv_device() in eeh_reset_device(). > > Fixes: 67086e32b564 ("powerpc/eeh: powerpc/eeh: Support error recovery for VF PE") > Reported-by: Pridhiviraj Paidipeddi <ppaidipe@in.ibm.com> > Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com> Applied to powerpc fixes, thanks. https://git.kernel.org/powerpc/c/cca0e542e02e48cce541a49c40 cheers
diff --git a/arch/powerpc/kernel/eeh_driver.c b/arch/powerpc/kernel/eeh_driver.c index 389b0d3..5c0429f 100644 --- a/arch/powerpc/kernel/eeh_driver.c +++ b/arch/powerpc/kernel/eeh_driver.c @@ -648,7 +648,7 @@ static int eeh_reset_device(struct eeh_pe *pe, struct pci_bus *bus, pci_unlock_rescan_remove(); } } else if (frozen_bus) { - eeh_pe_dev_traverse(pe, eeh_rmv_device, &rmv_data); + eeh_pe_dev_traverse(pe, eeh_rmv_device, rmv_data); } /*
When calling eeh_rmv_device() in eeh_reset_device() for partial hotplug case, @rmv_data instead of its address is the proper argument. Otherwise, the stack frame is corrupted when writing to @rmv_data (actually its address) in eeh_rmv_device(). It results in kernel crash as observed. This fixes the issue by passing @rmv_data, not its address to eeh_rmv_device() in eeh_reset_device(). Cc: stable@vger.kernel.org # v4.6+ Fixes: 67086e32b564 ("powerpc/eeh: powerpc/eeh: Support error recovery for VF PE") Reported-by: Pridhiviraj Paidipeddi <ppaidipe@in.ibm.com> Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com> --- arch/powerpc/kernel/eeh_driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)