[v2] net/ixgbe: fix missing NULL point check

Message ID 20180716124704.212776-1-qi.z.zhang@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Qi Zhang
Headers
Series [v2] net/ixgbe: fix missing NULL point check |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Qi Zhang July 16, 2018, 12:47 p.m. UTC
  Add missing NULL point check inside ixgbe_pf_host_uninit, or it may cause
segment fault when detaching a device.

Fixes: cf80ba6e2038 ("net/ixgbe: add support for representor ports")
Cc: stable@dpdk.org

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
---

v2: rebase

 drivers/net/ixgbe/ixgbe_pf.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
  

Comments

Qi Zhang July 19, 2018, 12:35 p.m. UTC | #1
Hi Remy:
	Would you mind to give an ack for this patch if no more issue, so I can merge to dpdk-next-net-intel.
Thanks
Qi

> -----Original Message-----
> From: Zhang, Qi Z
> Sent: Monday, July 16, 2018 8:47 PM
> To: Horton, Remy <remy.horton@intel.com>
> Cc: Lu, Wenzhuo <wenzhuo.lu@intel.com>; dev@dpdk.org; Zhang, Qi Z
> <qi.z.zhang@intel.com>; stable@dpdk.org
> Subject: [PATCH v2] net/ixgbe: fix missing NULL point check
> 
> Add missing NULL point check inside ixgbe_pf_host_uninit, or it may cause
> segment fault when detaching a device.
> 
> Fixes: cf80ba6e2038 ("net/ixgbe: add support for representor ports")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
> ---
> 
> v2: rebase
> 
>  drivers/net/ixgbe/ixgbe_pf.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/ixgbe/ixgbe_pf.c b/drivers/net/ixgbe/ixgbe_pf.c index
> c381acf44..4b833ffab 100644
> --- a/drivers/net/ixgbe/ixgbe_pf.c
> +++ b/drivers/net/ixgbe/ixgbe_pf.c
> @@ -128,8 +128,6 @@ void ixgbe_pf_host_uninit(struct rte_eth_dev
> *eth_dev)
> 
>  	PMD_INIT_FUNC_TRACE();
> 
> -	vfinfo =
> IXGBE_DEV_PRIVATE_TO_P_VFDATA(eth_dev->data->dev_private);
> -
>  	RTE_ETH_DEV_SRIOV(eth_dev).active = 0;
>  	RTE_ETH_DEV_SRIOV(eth_dev).nb_q_per_pool = 0;
>  	RTE_ETH_DEV_SRIOV(eth_dev).def_vmdq_idx = 0; @@ -139,6 +137,10
> @@ void ixgbe_pf_host_uninit(struct rte_eth_dev *eth_dev)
>  	if (vf_num == 0)
>  		return;
> 
> +	vfinfo =
> IXGBE_DEV_PRIVATE_TO_P_VFDATA(eth_dev->data->dev_private);
> +	if (*vfinfo == NULL)
> +		return;
> +
>  	ret = rte_eth_switch_domain_free((*vfinfo)->switch_domain_id);
>  	if (ret)
>  		PMD_INIT_LOG(WARNING, "failed to free switch domain: %d", ret);
> --
> 2.13.6
  
Remy Horton July 19, 2018, 12:41 p.m. UTC | #2
On 16/07/2018 13:47, Qi Zhang wrote:
> Add missing NULL point check inside ixgbe_pf_host_uninit, or it may cause
> segment fault when detaching a device.
>
> Fixes: cf80ba6e2038 ("net/ixgbe: add support for representor ports")
> Cc: stable@dpdk.org
>
> Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>

Acked-by: Remy Horton <remy.horton@intel.com>
  
Qi Zhang July 19, 2018, 12:46 p.m. UTC | #3
> -----Original Message-----
> From: Horton, Remy
> Sent: Thursday, July 19, 2018 8:41 PM
> To: Zhang, Qi Z <qi.z.zhang@intel.com>
> Cc: Lu, Wenzhuo <wenzhuo.lu@intel.com>; dev@dpdk.org; stable@dpdk.org
> Subject: Re: [PATCH v2] net/ixgbe: fix missing NULL point check
> 
> 
> On 16/07/2018 13:47, Qi Zhang wrote:
> > Add missing NULL point check inside ixgbe_pf_host_uninit, or it may
> > cause segment fault when detaching a device.
> >
> > Fixes: cf80ba6e2038 ("net/ixgbe: add support for representor ports")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
> 
> Acked-by: Remy Horton <remy.horton@intel.com>

Applied to dpdk-next-net-intel.

Thanks!
Qi
  

Patch

diff --git a/drivers/net/ixgbe/ixgbe_pf.c b/drivers/net/ixgbe/ixgbe_pf.c
index c381acf44..4b833ffab 100644
--- a/drivers/net/ixgbe/ixgbe_pf.c
+++ b/drivers/net/ixgbe/ixgbe_pf.c
@@ -128,8 +128,6 @@  void ixgbe_pf_host_uninit(struct rte_eth_dev *eth_dev)
 
 	PMD_INIT_FUNC_TRACE();
 
-	vfinfo = IXGBE_DEV_PRIVATE_TO_P_VFDATA(eth_dev->data->dev_private);
-
 	RTE_ETH_DEV_SRIOV(eth_dev).active = 0;
 	RTE_ETH_DEV_SRIOV(eth_dev).nb_q_per_pool = 0;
 	RTE_ETH_DEV_SRIOV(eth_dev).def_vmdq_idx = 0;
@@ -139,6 +137,10 @@  void ixgbe_pf_host_uninit(struct rte_eth_dev *eth_dev)
 	if (vf_num == 0)
 		return;
 
+	vfinfo = IXGBE_DEV_PRIVATE_TO_P_VFDATA(eth_dev->data->dev_private);
+	if (*vfinfo == NULL)
+		return;
+
 	ret = rte_eth_switch_domain_free((*vfinfo)->switch_domain_id);
 	if (ret)
 		PMD_INIT_LOG(WARNING, "failed to free switch domain: %d", ret);