Skip to content

Commit

Permalink
qede: make driver reliable on unload after failures
Browse files Browse the repository at this point in the history
In case recovery was not successful, netdev still should be
present. But we should clear cdev if something bad happens
on recovery.

We also check cdev for null on dev close. That could be a case
if recovery was not successful.

Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
Signed-off-by: Alexander Lobakin <alobakin@marvell.com>
Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Igor Russkikh authored and David S. Miller committed Aug 25, 2020
1 parent c5c642c commit adc100d
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions drivers/net/ethernet/qlogic/qede/qede_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1238,7 +1238,10 @@ static int __qede_probe(struct pci_dev *pdev, u32 dp_module, u8 dp_level,
err4:
qede_rdma_dev_remove(edev, (mode == QEDE_PROBE_RECOVERY));
err3:
free_netdev(edev->ndev);
if (mode != QEDE_PROBE_RECOVERY)
free_netdev(edev->ndev);
else
edev->cdev = NULL;
err2:
qed_ops->common->slowpath_stop(cdev);
err1:
Expand Down Expand Up @@ -2473,7 +2476,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;
}
Expand Down

0 comments on commit adc100d

Please sign in to comment.