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

dev at openvswitch.org dev at openvswitch.org
Mon Apr 23 21:07:45 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.2 has been updated
       via  7d09d61fac2c19d23b7b3cee501a4404220c9f46 (commit)
      from  c38e95a3368d68e66387796c26708516f69bcc94 (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 7d09d61fac2c19d23b7b3cee501a4404220c9f46
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=7d09d61fac2c19d23b7b3cee501a4404220c9f46
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