Thanks, applied.

On Mon, Dec 16, 2013 at 11:56:48AM -0600, Ethan Jackson wrote:
> Acked-by: Ethan Jackson <et...@nicira.com>
> 
> 
> On Mon, Dec 16, 2013 at 11:31 AM, Ben Pfaff <b...@nicira.com> wrote:
> > Ethan, will you review this?  It fixes a crash.
> >
> > On Mon, Nov 25, 2013 at 02:14:33PM -0800, Ben Pfaff wrote:
> >> If one configured a controller which does not exist, waited for the switch
> >> to enter fail-open mode, and then deleted the controller, then
> >> ofproto_set_controllers() would take ofproto_mutex and call
> >> update_fail_open(), which would call fail_open_destroy(), which would call
> >> fail_open_recover(), which would call ofproto_delete_flow(), which requires
> >> ofproto_mutex not to be held since it eventually try to take it.  This
> >> caused OVS to abort.
> >>
> >> This fixes the problem by releasing ofproto_mutex earlier, since nothing
> >> seems to require it being held so long (a comment in
> >> connmgr_set_controllers() says that this is likely to be the case).
> >>
> >> Better annotations would have found this problem at compile time.  A later
> >> patch adds them.
> >>
> >> Reported-by: ZhengLingyun <konghuaru...@163.com>
> >> Signed-off-by: Ben Pfaff <b...@nicira.com>
> >> ---
> >>  ofproto/connmgr.c |    3 ++-
> >>  1 file changed, 2 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/ofproto/connmgr.c b/ofproto/connmgr.c
> >> index da25930..a062772 100644
> >> --- a/ofproto/connmgr.c
> >> +++ b/ofproto/connmgr.c
> >> @@ -637,12 +637,13 @@ connmgr_set_controllers(struct connmgr *mgr,
> >>
> >>      shash_destroy(&new_controllers);
> >>
> >> +    ovs_mutex_unlock(&ofproto_mutex);
> >> +
> >>      update_in_band_remotes(mgr);
> >>      update_fail_open(mgr);
> >>      if (had_controllers != connmgr_has_controllers(mgr)) {
> >>          ofproto_flush_flows(mgr->ofproto);
> >>      }
> >> -    ovs_mutex_unlock(&ofproto_mutex);
> >>  }
> >>
> >>  /* Drops the connections between 'mgr' and all of its primary and 
> >> secondary
> >> --
> >> 1.7.10.4
> >>
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to