octeontx2-pf: Fix reset_task bugs
authorSubbaraya Sundeep <sbhatta@marvell.com>
Sat, 25 Jul 2020 04:43:52 +0000 (10:13 +0530)
committerDavid S. Miller <davem@davemloft.net>
Wed, 29 Jul 2020 00:14:48 +0000 (17:14 -0700)
Two bugs exist in the code related to reset_task
in PF driver one is the missing protection
against network stack ndo_open and ndo_close.
Other one is the missing cancel_work.
This patch fixes those problems.

Fixes: 4ff7d1488a84 ("octeontx2-pf: Error handling support")
Signed-off-by: Subbaraya Sundeep <sbhatta@marvell.com>
Signed-off-by: Sunil Goutham <sgoutham@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c

index 6478656..75a8c40 100644 (file)
@@ -1730,10 +1730,12 @@ static void otx2_reset_task(struct work_struct *work)
        if (!netif_running(pf->netdev))
                return;
 
+       rtnl_lock();
        otx2_stop(pf->netdev);
        pf->reset_count++;
        otx2_open(pf->netdev);
        netif_trans_update(pf->netdev);
+       rtnl_unlock();
 }
 
 static const struct net_device_ops otx2_netdev_ops = {
@@ -2111,6 +2113,7 @@ static void otx2_remove(struct pci_dev *pdev)
 
        pf = netdev_priv(netdev);
 
+       cancel_work_sync(&pf->reset_task);
        /* Disable link notifications */
        otx2_cgx_config_linkevents(pf, false);