A function call using in_port was accidentally moved before the check
to see if it is null. in_port can be null if a port was deleted but
an update is still pending. This moves the call after the check.
Bug #2313
{
struct bridge *br = br_;
struct port *in_port;
{
struct bridge *br = br_;
struct port *in_port;
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);
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) {
}
if (!br->has_bonded_ports) {