On Tue, Sep 13, 2016 at 02:45:54PM -0700, Jarno Rajahalme wrote:
> 
> > On Sep 13, 2016, at 10:56 AM, Ben Pfaff <b...@ovn.org> wrote:
> > 
> > On Mon, Sep 12, 2016 at 01:52:31PM -0700, Jarno Rajahalme wrote:
> >> Set ofproto's connmgr pointer to NULL after the connmgr has been
> >> destructed, and check for NULL when sending a flow removed
> >> notification.
> >> 
> >> Verified by sending the flow removed message unconditionally and
> >> observing numerous core dumps in the test suite.
> >> 
> >> Found by inspection.
> >> 
> >> Fixes: f695ebfae5 ("ofproto: Postpone sending flow removed messages.")
> >> Signed-off-by: Jarno Rajahalme <ja...@ovn.org>
> >> ---
> >> v3: New patch for v3.
> > 
> > I'm worried a bit that the rules needed to access these structures
> > correctly are getting complicated.  Maybe there should be a high-level
> > overview somewhere.
> > 
> 
> The main complication here is that if we tagged connmgr * with 
> OVS_GUARDED_BY(ofproto_mutex), we would need to do widen the scope of 
> ofproto_mutex quite a bit. Maybe introducing a rwlock for connmgr separately 
> would do it, albeit with the assumption that the main thread remains the only 
> writer, all that extra read locking from the main thread would be new 
> overhead. It would be more maintainable, though.

Yes, I recognize that and I don't want to make the scope bigger if we
can avoid it.

Another option might be to just stick the flow_removed messages on a
list from the callback and then flush them later in the ofproto_run()
loop.  They're already asynchronous and unpredictable since RCU can
delay sending them an arbitrary amount of time.

> I made a note to look into this later.
> 
> Do you think we should apply this to branch-2.6 as well as the master?

It fixes a crash bug right?  So, yes, unless you know a simpler fix.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to