First, we check cdev for null on dev close. That could be a case if recovery was not successful.
Next, we nullify cdev if something bad happens on recovery, to not to access freed memory accidentially. Signed-off-by: Igor Russkikh <irussk...@marvell.com> Signed-off-by: Alexander Lobakin <aloba...@marvell.com> Signed-off-by: Michal Kalderon <michal.kalde...@marvell.com> --- drivers/net/ethernet/qlogic/qede/qede_main.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/qlogic/qede/qede_main.c b/drivers/net/ethernet/qlogic/qede/qede_main.c index 937d8e69ad39..03b0c943b759 100644 --- a/drivers/net/ethernet/qlogic/qede/qede_main.c +++ b/drivers/net/ethernet/qlogic/qede/qede_main.c @@ -1244,6 +1244,7 @@ static int __qede_probe(struct pci_dev *pdev, u32 dp_module, u8 dp_level, qed_ops->common->slowpath_stop(cdev); err1: qed_ops->common->remove(cdev); + edev->cdev = NULL; err0: return rc; } @@ -2474,7 +2475,8 @@ static int qede_close(struct net_device *ndev) qede_unload(edev, QEDE_UNLOAD_NORMAL, false); - edev->ops->common->update_drv_state(edev->cdev, false); + if (edev->cdev) + edev->ops->common->update_drv_state(edev->cdev, false); return 0; } -- 2.17.1