bridge: Fix segfault when updating learning table for deleted port.
[sliver-openvswitch.git] / vswitchd / bridge.c
index 276f496..fb6a141 100644 (file)
@@ -2092,16 +2092,17 @@ bridge_account_flow_ofhook_cb(const flow_t *flow,
 {
     struct bridge *br = br_;
     struct port *in_port;
-    int vlan;
     const union odp_action *a;
 
     /* Feed information from the active flows back into the learning table
      * to ensure that table is always in sync with what is actually flowing
      * through the datapath. */
     in_port = port_from_dp_ifidx(br, flow->in_port);
-    vlan = flow_get_vlan(br, flow, in_port, false);
-    if (in_port && vlan >= 0) {
-        update_learning_table(br, flow, vlan, in_port);
+    if (in_port) {
+        int vlan = flow_get_vlan(br, flow, in_port, false);
+         if (vlan >= 0) {
+            update_learning_table(br, flow, vlan, in_port);
+        }
     }
 
     if (!br->has_bonded_ports) {