summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Lobakin <alobakin@marvell.com>2020-06-23 16:51:35 +0300
committerSasha Levin <sashal@kernel.org>2020-06-30 15:36:59 -0400
commit065f225ef975513e5ba0edaaa7c7d0b74bbc0b75 (patch)
treed8f24ca99e49286a6be7de88a92c4d6d3516e13b
parentf490e70fa7eb9a237ff112d2ffe100f107e41bb2 (diff)
net: qede: fix use-after-free on recovery and AER handling
[ Upstream commit ec6c80590bde6b5dfa4970fffa3572f1acd313ca ] Set edev->cdev pointer to NULL after calling remove() callback to avoid using of already freed object. Fixes: ccc67ef50b90 ("qede: Error recovery process") Signed-off-by: Alexander Lobakin <alobakin@marvell.com> Signed-off-by: Igor Russkikh <irusskikh@marvell.com> Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
-rw-r--r--drivers/net/ethernet/qlogic/qede/qede_main.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/ethernet/qlogic/qede/qede_main.c b/drivers/net/ethernet/qlogic/qede/qede_main.c
index 361a1d759b0b..2c3d654c8454 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_main.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_main.c
@@ -1247,6 +1247,7 @@ static void __qede_remove(struct pci_dev *pdev, enum qede_remove_mode mode)
if (system_state == SYSTEM_POWER_OFF)
return;
qed_ops->common->remove(cdev);
+ edev->cdev = NULL;
/* Since this can happen out-of-sync with other flows,
* don't release the netdevice until after slowpath stop