]> git.droids-corp.org - dpdk.git/commitdiff
net/ice: fix crash on representor port closing
authorDapeng Yu <dapengx.yu@intel.com>
Tue, 7 Sep 2021 02:00:33 +0000 (10:00 +0800)
committerQi Zhang <qi.z.zhang@intel.com>
Mon, 13 Sep 2021 05:53:06 +0000 (07:53 +0200)
If DCF representor port is closed after DCF port is closed, there will
be segmentation fault because representor accesses the released resource
of DCF port.

This patch checks if the resource is present before accessing.

Fixes: 5674465a32c8 ("net/ice: add DCF VLAN handling")
Cc: stable@dpdk.org
Signed-off-by: Dapeng Yu <dapengx.yu@intel.com>
Acked-by: Haiyue Wang <haiyue.wang@intel.com>
drivers/net/ice/ice_dcf_vf_representor.c

index 970461f3e90ac9a43a23d8f62da215fd3b8cb2a5..b547c42f913706a670b1fce34f2d0967ff7057ff 100644 (file)
@@ -114,6 +114,11 @@ ice_dcf_vf_repr_hw(struct ice_dcf_vf_repr *repr)
        struct ice_dcf_adapter *dcf_adapter =
                        repr->dcf_eth_dev->data->dev_private;
 
+       if (!dcf_adapter) {
+               PMD_DRV_LOG(ERR, "DCF for VF representor has been released\n");
+               return NULL;
+       }
+
        return &dcf_adapter->real_hw;
 }
 
@@ -124,6 +129,9 @@ ice_dcf_vf_repr_dev_info_get(struct rte_eth_dev *dev,
        struct ice_dcf_vf_repr *repr = dev->data->dev_private;
        struct ice_dcf_hw *dcf_hw = ice_dcf_vf_repr_hw(repr);
 
+       if (!dcf_hw)
+               return -EIO;
+
        dev_info->device = dev->device;
        dev_info->max_mac_addrs = 1;
        dev_info->max_rx_queues = dcf_hw->vsi_res->num_queue_pairs;