[ovs-git] Open vSwitch: ofproto-dpif: Destroy bundle after moving its last port out. (branch-1.10)

dev at openvswitch.org dev at openvswitch.org
Wed Aug 14 18:50:48 UTC 2013

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Open vSwitch".

The branch, branch-1.10 has been updated
       via  efa36473040f4f00062b282d97f67837f84381a3 (commit)
      from  f0e84620ed4aec92ff6473551cc843b63340dd1f (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit efa36473040f4f00062b282d97f67837f84381a3
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=efa36473040f4f00062b282d97f67837f84381a3
Author: Ben Pfaff <blp at nicira.com>
ofproto-dpif: Destroy bundle after moving its last port out.
When the ofp_port argument to bundle_add_port() refers to an ofport_dpif
that already belongs to some other bundle, bundle_add_port() removed
the port from the other bundle, correctly, with bundle_del_port().
If the other bundle now contained no ports, however, this violated the
invariant that a bundle always contains at least one port.

Normally, this would get fixed up when the other bundle was processed
later during reconfiguration.  I haven't quite zeroed in on the exact
case where this is not true, but segfaults have happened here in
production, in particular when port adds and deletes happen simultaneously
and the new port reuses the OpenFlow port number of one of the deleted
ports.  It seems that the duplicate port number allows some port to rip
away the new port from its bundle without destroying that bundle.  I
suspect, therefore, that there is still a more subtle bug here, but I
hope that this will fix the segfault.

Bug #18967.
Signed-off-by: Ben Pfaff <blp at nicira.com>


Summary of changes:
 ofproto/ofproto-dpif.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Open vSwitch

More information about the git mailing list