The return value of the get link function call was not checked, and
could return a negative value indicating a failure. This meant the
link_status of the link being checked is invalid, because the link was
not filled with data. The return value is now checked, and if the return
value is not 0 for success, the loop continues with the next port.

To avoid confusion between variable names, the existing retval variable
is renamed to link_status, to better represent its use.

Coverity issue: 350348
Fixes: c8e6ceecebc1 ("examples/ioat: add new sample app for ioat driver")
Cc: pawelx.mod...@intel.com
Cc: sta...@dpdk.org

Signed-off-by: Ciara Power <ciara.po...@intel.com>

---
v2:
  - Changed commit log subject and description
  - Rebased onto master
---
 examples/ioat/ioatfwd.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/examples/ioat/ioatfwd.c b/examples/ioat/ioatfwd.c
index e9117718f..99ecc0fde 100644
--- a/examples/ioat/ioatfwd.c
+++ b/examples/ioat/ioatfwd.c
@@ -697,7 +697,7 @@ check_link_status(uint32_t port_mask)
 {
        uint16_t portid;
        struct rte_eth_link link;
-       int retval = 0;
+       int ret, link_status = 0;
 
        printf("\nChecking link status\n");
        RTE_ETH_FOREACH_DEV(portid) {
@@ -705,7 +705,12 @@ check_link_status(uint32_t port_mask)
                        continue;
 
                memset(&link, 0, sizeof(link));
-               rte_eth_link_get(portid, &link);
+               ret = rte_eth_link_get(portid, &link);
+               if (ret < 0) {
+                       printf("Port %u link get failed: err=%d\n",
+                                       portid, ret);
+                       continue;
+               }
 
                /* Print link status */
                if (link.link_status) {
@@ -714,11 +719,11 @@ check_link_status(uint32_t port_mask)
                                portid, link.link_speed,
                                (link.link_duplex == ETH_LINK_FULL_DUPLEX) ?
                                ("full-duplex") : ("half-duplex\n"));
-                       retval = 1;
+                       link_status = 1;
                } else
                        printf("Port %d Link Down\n", portid);
        }
-       return retval;
+       return link_status;
 }
 
 static void
-- 
2.17.1

Reply via email to