Message ID | 1447329318-7840-1-git-send-email-p.fedin@samsung.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Pavel Fedin <p.fedin@samsung.com> Date: Thu, 12 Nov 2015 14:55:18 +0300 > If device probe fails, driver remains bound to the PCI device. However, > driver data has been reset to NULL. This causes crash upon dereferencing > it in nicvf_remove() > > Signed-off-by: Pavel Fedin <p.fedin@samsung.com> Applied, thanks. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hello! > > If device probe fails, driver remains bound to the PCI device. However, > > driver data has been reset to NULL. This causes crash upon dereferencing > > it in nicvf_remove() > > > > Signed-off-by: Pavel Fedin <p.fedin@samsung.com> > > Applied, thanks. Thank you very much, however i've just found one more case where i still get this crash. I should have done this from the beginning, but please revert it in your repo, i'm sending v2, which covers more cases. The new case is feeding the device to vfio after the probe failed. In this case nicvf_remove() is called upon unbind. Kind regards, Pavel Fedin Expert Engineer Samsung Electronics Research center Russia -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Pavel Fedin <p.fedin@samsung.com> Date: Mon, 16 Nov 2015 16:21:06 +0300 > Thank you very much, however i've just found one more case where i > still get this crash. I should have done this from the beginning, > but please revert it in your repo, i'm sending v2, which covers more > cases. The new case is feeding the device to vfio after the probe > failed. In this case nicvf_remove() is called upon unbind. Commits installed in my tree are part of the permanent commit reccord, and will not be reverted. Please instead send me a relative patch which takes care of the other cases. Thanks. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/ethernet/cavium/thunder/nicvf_main.c b/drivers/net/ethernet/cavium/thunder/nicvf_main.c index a937772..372c39e 100644 --- a/drivers/net/ethernet/cavium/thunder/nicvf_main.c +++ b/drivers/net/ethernet/cavium/thunder/nicvf_main.c @@ -1600,6 +1600,9 @@ static void nicvf_remove(struct pci_dev *pdev) static void nicvf_shutdown(struct pci_dev *pdev) { + if (!pci_get_drvdata(pdev)) + return; + nicvf_remove(pdev); }
If device probe fails, driver remains bound to the PCI device. However, driver data has been reset to NULL. This causes crash upon dereferencing it in nicvf_remove() Signed-off-by: Pavel Fedin <p.fedin@samsung.com> --- drivers/net/ethernet/cavium/thunder/nicvf_main.c | 3 +++ 1 file changed, 3 insertions(+)