]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
net: qede: fix use-after-free on recovery and AER handling
authorAlexander Lobakin <alobakin@marvell.com>
Tue, 23 Jun 2020 13:51:35 +0000 (16:51 +0300)
committerSasha Levin <sashal@kernel.org>
Tue, 30 Jun 2020 19:36:59 +0000 (15:36 -0400)
[ 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>
drivers/net/ethernet/qlogic/qede/qede_main.c

index 361a1d759b0b58d9a1250879717f82fda7cfadc5..2c3d654c8454352dc189a8e437bbbd659203183e 100644 (file)
@@ -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