[dpdk-stable] [PATCH v3] net/ice: fix representor port segmentation fault

dapengx.yu at intel.com dapengx.yu at intel.com
Tue Sep 7 04:00:33 CEST 2021


From: Dapeng Yu <dapengx.yu at intel.com>

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 at dpdk.org

Signed-off-by: Dapeng Yu <dapengx.yu at intel.com>
---
V2:
 * Remove (void) to make code clean.
V3:
 * Only check resource accessibility but not release it.
---
 drivers/net/ice/ice_dcf_vf_representor.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/net/ice/ice_dcf_vf_representor.c b/drivers/net/ice/ice_dcf_vf_representor.c
index 970461f3e9..b547c42f91 100644
--- a/drivers/net/ice/ice_dcf_vf_representor.c
+++ b/drivers/net/ice/ice_dcf_vf_representor.c
@@ -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;
-- 
2.27.0



More information about the stable mailing list