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