dpdk: fix crash due to incorrect xd->flags value with slave's link toggling 64/11464/2
authorSteve Shin <jonshin@cisco.com>
Fri, 30 Mar 2018 07:40:40 +0000 (00:40 -0700)
committerJohn Lo <loj@cisco.com>
Fri, 30 Mar 2018 13:33:40 +0000 (13:33 +0000)
xd->flags is set incorrectly when a slave link is down in bonded interface mode.
This can result in VPP crash when data traffic flows to the interface.

Change-Id: Ideb9f5231db1211e8452c52fde646d681310c951
Signed-off-by: Steve Shin <jonshin@cisco.com>
src/plugins/dpdk/device/common.c

index e8f33cf..3f113aa 100644 (file)
@@ -280,8 +280,11 @@ dpdk_port_state_callback_inline (dpdk_portid_t port_id,
          vl_api_force_rpc_call_main_thread
            (garp_na_proc_callback, (u8 *) & bd_port, sizeof (uword));
        }
-      xd->flags |= link_up ?
-       DPDK_DEVICE_FLAG_BOND_SLAVE_UP : ~DPDK_DEVICE_FLAG_BOND_SLAVE_UP;
+
+      if (link_up)
+       xd->flags |= DPDK_DEVICE_FLAG_BOND_SLAVE_UP;
+      else
+       xd->flags &= ~DPDK_DEVICE_FLAG_BOND_SLAVE_UP;
     }
   else                         /* Should not happen as callback not setup for "normal" links */
     {