[ovs-git] Open vSwitch: ofproto: Fix use-after-free error when ports disappear. (branch-1.4)

dev at openvswitch.org dev at openvswitch.org
Mon Apr 23 21:02:52 UTC 2012


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.4 has been updated
       via  87096e18f7c1012a47799d9f23be3bfec0174600 (commit)
      from  57250b7a198a097ecf7e89bc674cda3061118759 (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 87096e18f7c1012a47799d9f23be3bfec0174600
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=87096e18f7c1012a47799d9f23be3bfec0174600
Author: Ben Pfaff <blp at nicira.com>
		
ofproto: Fix use-after-free error when ports disappear.
		
update_port() can delete the port for which it is called, if the underlying
network device has been destroyed, so HMAP_FOR_EACH is unsafe in
ofproto_run().

Less obviously, update_port() can delete unrelated ports.  For example,
suppose that initially device A is port 1 and device B is port 2.  If
update_port("A") runs just after this, then it will ofport_remove() both
ports, then ofport_install() A as the new port 2.

So this commit first assembles a list of ports to update, then updates them
in a separate loop.

Without this commit, running "ovs-dpctl del-dp" while ovs-vswitchd is
running consistently causes a crash for me within a few seconds.

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


-----------------------------------------------------------------------

Summary of changes:
 ofproto/ofproto.c |   18 ++++++++++++++++--
 1 files changed, 16 insertions(+), 2 deletions(-)


hooks/post-receive
-- 
Open vSwitch



More information about the git mailing list