app/testpmd: fix unchecked return value
Checks
Commit Message
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
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
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
>
>
@@ -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];