app/testpmd: fix unchecked return value

Message ID 20210316045518.20234-1-kalesh-anakkur.purayil@broadcom.com (mailing list archive)
State Changes Requested, archived
Delegated to: Ferruh Yigit
Headers
Series app/testpmd: fix unchecked return value |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/iol-abi-testing success Testing PASS
ci/travis-robot success travis build: passed
ci/github-robot success github build: passed
ci/iol-testing success Testing PASS
ci/iol-mellanox-Functional success Functional Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/intel-Testing success Testing PASS

Commit Message

Kalesh A P March 16, 2021, 4:55 a.m. UTC
  From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>

CID 353629 (#1 of 1): Unchecked return value (CHECKED_RETURN)
check_return: Calling rte_eth_dev_info_get without checking
return value (as is done elsewhere 110 out of 117 times).

Coverity issue: 353629

Fixes: e1d44d0ad623 ("app/testpmd: show MAC addresses added to a port")
Cc: stable@dpdk.org

Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
---
 app/test-pmd/config.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
  

Comments

Li, Xiaoyun March 16, 2021, 5:43 a.m. UTC | #1
Hi

> -----Original Message-----
> From: Kalesh A P <kalesh-anakkur.purayil@broadcom.com>
> Sent: Tuesday, March 16, 2021 12:55
> To: dev@dpdk.org
> Cc: Li, Xiaoyun <xiaoyun.li@intel.com>; Yigit, Ferruh <ferruh.yigit@intel.com>
> Subject: [dpdk-dev] [PATCH] app/testpmd: fix unchecked return value
> 
> From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
> 
> CID 353629 (#1 of 1): Unchecked return value (CHECKED_RETURN)
> check_return: Calling rte_eth_dev_info_get without checking return value (as is
> done elsewhere 110 out of 117 times).

You can just say "This patch checks return value for rte_eth_dev_info_get() in show_macs()."

> 
> Coverity issue: 353629
> 
No need for this breaking line. Please see other examples for Coverity issues.

> Fixes: e1d44d0ad623 ("app/testpmd: show MAC addresses added to a port")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
> ---
>  app/test-pmd/config.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index
> 576d5ac..ade26e0 100644
> --- a/app/test-pmd/config.c
> +++ b/app/test-pmd/config.c
> @@ -4927,10 +4927,15 @@ show_macs(portid_t port_id)
>  	struct rte_ether_addr *addr;
>  	uint32_t i, num_macs = 0;
>  	struct rte_eth_dev *dev;
> +	int ret;
> 
>  	dev = &rte_eth_devices[port_id];
> 
> -	rte_eth_dev_info_get(port_id, &dev_info);
> +	ret = rte_eth_dev_info_get(port_id, &dev_info);
> +	if (ret != 0) {
> +		printf("rte_eth_dev_info_get() failed for port %u\n", port_id);
> +		return;
> +	}

You can use eth_dev_info_get_print_err(). Testpmd uses this function to unify the err print. And only this place needs check, so you don't need to define "ret".
Just the following is enough:

if (eth_dev_info_get_print_err(port_id, &dev_info))
          return;

BRs
Xiaoyun
> 
>  	for (i = 0; i < dev_info.max_mac_addrs; i++) {
>  		addr = &dev->data->mac_addrs[i];
> --
> 2.10.1
  
Kalesh A P March 16, 2021, 6:31 a.m. UTC | #2
Hi Xiaoyun,

Thank you for the suggestion. I have sent the updated patch.

Regards,
Kalesh

On Tue, Mar 16, 2021 at 11:13 AM Li, Xiaoyun <xiaoyun.li@intel.com> wrote:

> Hi
>
> > -----Original Message-----
> > From: Kalesh A P <kalesh-anakkur.purayil@broadcom.com>
> > Sent: Tuesday, March 16, 2021 12:55
> > To: dev@dpdk.org
> > Cc: Li, Xiaoyun <xiaoyun.li@intel.com>; Yigit, Ferruh <
> ferruh.yigit@intel.com>
> > Subject: [dpdk-dev] [PATCH] app/testpmd: fix unchecked return value
> >
> > From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
> >
> > CID 353629 (#1 of 1): Unchecked return value (CHECKED_RETURN)
> > check_return: Calling rte_eth_dev_info_get without checking return value
> (as is
> > done elsewhere 110 out of 117 times).
>
> You can just say "This patch checks return value for
> rte_eth_dev_info_get() in show_macs()."
>
> >
> > Coverity issue: 353629
> >
> No need for this breaking line. Please see other examples for Coverity
> issues.
>
> > Fixes: e1d44d0ad623 ("app/testpmd: show MAC addresses added to a port")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
> > ---
> >  app/test-pmd/config.c | 7 ++++++-
> >  1 file changed, 6 insertions(+), 1 deletion(-)
> >
> > diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index
> > 576d5ac..ade26e0 100644
> > --- a/app/test-pmd/config.c
> > +++ b/app/test-pmd/config.c
> > @@ -4927,10 +4927,15 @@ show_macs(portid_t port_id)
> >       struct rte_ether_addr *addr;
> >       uint32_t i, num_macs = 0;
> >       struct rte_eth_dev *dev;
> > +     int ret;
> >
> >       dev = &rte_eth_devices[port_id];
> >
> > -     rte_eth_dev_info_get(port_id, &dev_info);
> > +     ret = rte_eth_dev_info_get(port_id, &dev_info);
> > +     if (ret != 0) {
> > +             printf("rte_eth_dev_info_get() failed for port %u\n",
> port_id);
> > +             return;
> > +     }
>
> You can use eth_dev_info_get_print_err(). Testpmd uses this function to
> unify the err print. And only this place needs check, so you don't need to
> define "ret".
> Just the following is enough:
>
> if (eth_dev_info_get_print_err(port_id, &dev_info))
>           return;
>
> BRs
> Xiaoyun
> >
> >       for (i = 0; i < dev_info.max_mac_addrs; i++) {
> >               addr = &dev->data->mac_addrs[i];
> > --
> > 2.10.1
>
>
  

Patch

diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index 576d5ac..ade26e0 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -4927,10 +4927,15 @@  show_macs(portid_t port_id)
 	struct rte_ether_addr *addr;
 	uint32_t i, num_macs = 0;
 	struct rte_eth_dev *dev;
+	int ret;
 
 	dev = &rte_eth_devices[port_id];
 
-	rte_eth_dev_info_get(port_id, &dev_info);
+	ret = rte_eth_dev_info_get(port_id, &dev_info);
+	if (ret != 0) {
+		printf("rte_eth_dev_info_get() failed for port %u\n", port_id);
+		return;
+	}
 
 	for (i = 0; i < dev_info.max_mac_addrs; i++) {
 		addr = &dev->data->mac_addrs[i];