From da9cdcd1f37220e87db23993d6352637d71df25b Mon Sep 17 00:00:00 2001 From: Dapeng Yu Date: Tue, 7 Sep 2021 10:00:33 +0800 Subject: [PATCH 1/1] net/ice: fix crash on representor port closing 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 Acked-by: Haiyue Wang --- 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.20.1