examples/bond: check thread termination
authorPiotr Azarewicz <piotrx.t.azarewicz@intel.com>
Wed, 29 Jun 2016 13:15:38 +0000 (15:15 +0200)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Mon, 11 Jul 2016 15:21:21 +0000 (17:21 +0200)
The example is calling rte_eal_wait_lcore without checking return value.
Now it is fixed by checking the value and print proper message.

Coverity issue: 37789, 37790
Fixes: cc7e8ae84faa ("examples/bond: add example application for link bonding mode 6")

Signed-off-by: Piotr Azarewicz <piotrx.t.azarewicz@intel.com>
Acked-by: Declan Doherty <declan.doherty@intel.com>
examples/bond/main.c

index 53bd044..776fad0 100644 (file)
@@ -590,10 +590,14 @@ static void cmd_stop_parsed(__attribute__((unused)) void *parsed_result,
                return;
        }
        global_flag_stru_p->LcoreMainIsRunning = 0;
-       rte_eal_wait_lcore(global_flag_stru_p->LcoreMainCore);
-       cmdline_printf(cl,
-                       "lcore_main stopped on core:%d\n",
-                       global_flag_stru_p->LcoreMainCore);
+       if (rte_eal_wait_lcore(global_flag_stru_p->LcoreMainCore) < 0)
+               cmdline_printf(cl,
+                               "error: lcore_main can not stop on core:%d\n",
+                               global_flag_stru_p->LcoreMainCore);
+       else
+               cmdline_printf(cl,
+                               "lcore_main stopped on core:%d\n",
+                               global_flag_stru_p->LcoreMainCore);
        rte_spinlock_unlock(&global_flag_stru_p->lock);
 }
 
@@ -628,10 +632,14 @@ static void cmd_quit_parsed(__attribute__((unused)) void *parsed_result,
                return;
        }
        global_flag_stru_p->LcoreMainIsRunning = 0;
-       rte_eal_wait_lcore(global_flag_stru_p->LcoreMainCore);
-       cmdline_printf(cl,
-                       "lcore_main stopped on core:%d\n",
-                       global_flag_stru_p->LcoreMainCore);
+       if (rte_eal_wait_lcore(global_flag_stru_p->LcoreMainCore) < 0)
+               cmdline_printf(cl,
+                               "error: lcore_main can not stop on core:%d\n",
+                               global_flag_stru_p->LcoreMainCore);
+       else
+               cmdline_printf(cl,
+                               "lcore_main stopped on core:%d\n",
+                               global_flag_stru_p->LcoreMainCore);
        rte_spinlock_unlock(&global_flag_stru_p->lock);
        cmdline_quit(cl);
 }