app/testpmd: fix crash when doing port info of vdev

Message ID 20190216013646.9738-1-stephen@networkplumber.org (mailing list archive)
State Rejected, archived
Delegated to: Ferruh Yigit
Headers
Series app/testpmd: fix crash when doing port info of vdev |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/intel-Performance-Testing success Performance Testing PASS
ci/mellanox-Performance-Testing success Performance Testing PASS
ci/Intel-compilation success Compilation OK

Commit Message

Stephen Hemminger Feb. 16, 2019, 1:36 a.m. UTC
  From: Stephen Hemminger <sthemmin@microsoft.com>

Noticed a SEGV in testpmd doing:
 > show port info 1
on Hyper-V with failsafe/tap PMD.

A vdev may not have an associated device (i.e NULL) and therefore
testpmd should skip devargs in that case.

Fixes: cf72ed09181b ("app/testpmd: display devargs in port info output")
Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
---
 app/test-pmd/config.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
  

Comments

Jingjing Wu Feb. 18, 2019, 6:48 a.m. UTC | #1
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Stephen Hemminger
> Sent: Saturday, February 16, 2019 9:37 AM
> To: dev@dpdk.org
> Cc: stable@dpdk.org; Stephen Hemminger <sthemmin@microsoft.com>
> Subject: [dpdk-dev] [PATCH] app/testpmd: fix crash when doing port info of vdev
> 
> From: Stephen Hemminger <sthemmin@microsoft.com>
> 
> Noticed a SEGV in testpmd doing:
>  > show port info 1
> on Hyper-V with failsafe/tap PMD.
> 
> A vdev may not have an associated device (i.e NULL) and therefore
> testpmd should skip devargs in that case.
> 
> Fixes: cf72ed09181b ("app/testpmd: display devargs in port info output")
> Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
> ---
>  app/test-pmd/config.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
> index b9e5dd923b0f..38708db943d2 100644
> --- a/app/test-pmd/config.c
> +++ b/app/test-pmd/config.c
> @@ -415,7 +415,8 @@ port_infos_display(portid_t port_id)
>  	rte_eth_dev_get_name_by_port(port_id, name);
>  	printf("\nDevice name: %s", name);
>  	printf("\nDriver name: %s", dev_info.driver_name);
> -	if (dev_info.device->devargs && dev_info.device->devargs->args)
> +	if (dev_info.device && dev_info.device->devargs &&
> +	    dev_info.device->devargs->args)
>  		printf("\nDevargs: %s", dev_info.device->devargs->args);
>  	printf("\nConnect to socket: %u", port->socket_id);
> 
> --
> 2.17.1

Acked-by: Jingjing Wu <jingjing.wu@intel.com>

Thanks
Jingjing
  
Ferruh Yigit Feb. 18, 2019, 3:45 p.m. UTC | #2
On 2/16/2019 1:36 AM, Stephen Hemminger wrote:
> From: Stephen Hemminger <sthemmin@microsoft.com>
> 
> Noticed a SEGV in testpmd doing:
>  > show port info 1
> on Hyper-V with failsafe/tap PMD.
> 
> A vdev may not have an associated device (i.e NULL) and therefore
> testpmd should skip devargs in that case.
> 
> Fixes: cf72ed09181b ("app/testpmd: display devargs in port info output")
> Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
> ---
>  app/test-pmd/config.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
> index b9e5dd923b0f..38708db943d2 100644
> --- a/app/test-pmd/config.c
> +++ b/app/test-pmd/config.c
> @@ -415,7 +415,8 @@ port_infos_display(portid_t port_id)
>  	rte_eth_dev_get_name_by_port(port_id, name);
>  	printf("\nDevice name: %s", name);
>  	printf("\nDriver name: %s", dev_info.driver_name);
> -	if (dev_info.device->devargs && dev_info.device->devargs->args)
> +	if (dev_info.device && dev_info.device->devargs &&
> +	    dev_info.device->devargs->args)

This means 'eth_dev->device' is NULL. Why the 'device' is NULL for eth_dev?
Is there anything to fix in the PMD?

>  		printf("\nDevargs: %s", dev_info.device->devargs->args);
>  	printf("\nConnect to socket: %u", port->socket_id);
>  
>
  
Stephen Hemminger April 9, 2019, 6:32 p.m. UTC | #3
On Fri, 15 Feb 2019 17:36:46 -0800
Stephen Hemminger <stephen@networkplumber.org> wrote:

> From: Stephen Hemminger <sthemmin@microsoft.com>
> 
> Noticed a SEGV in testpmd doing:
>  > show port info 1  
> on Hyper-V with failsafe/tap PMD.
> 
> A vdev may not have an associated device (i.e NULL) and therefore
> testpmd should skip devargs in that case.
> 
> Fixes: cf72ed09181b ("app/testpmd: display devargs in port info output")
> Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>

Can not reproduce with 19.05-rc1
  

Patch

diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index b9e5dd923b0f..38708db943d2 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -415,7 +415,8 @@  port_infos_display(portid_t port_id)
 	rte_eth_dev_get_name_by_port(port_id, name);
 	printf("\nDevice name: %s", name);
 	printf("\nDriver name: %s", dev_info.driver_name);
-	if (dev_info.device->devargs && dev_info.device->devargs->args)
+	if (dev_info.device && dev_info.device->devargs &&
+	    dev_info.device->devargs->args)
 		printf("\nDevargs: %s", dev_info.device->devargs->args);
 	printf("\nConnect to socket: %u", port->socket_id);