Should we also consider lock annotate the ofproto->connmgr variable? Also, it seems to me the lock can be per ofproto, instead of a global lock, but I am not sure this use case will benefit from a finer grain lock.
On Tue, Jul 29, 2014 at 11:20 AM, Alex Wang <al...@nicira.com> wrote: > connmgr_wants_packet_in_on_miss() is called by multiple threads > and thusly should be protected by the mutex. > > Signed-off-by: Alex Wang <al...@nicira.com> > --- > ofproto/connmgr.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/ofproto/connmgr.c b/ofproto/connmgr.c > index c6432bf..89af6b6 100644 > --- a/ofproto/connmgr.c > +++ b/ofproto/connmgr.c > @@ -1506,19 +1506,23 @@ ofconn_wants_packet_in_on_miss(struct ofconn *ofconn, > * This logic assumes that "table-miss" packet_in messages > * are always sent to controller_id 0. */ > bool > -connmgr_wants_packet_in_on_miss(struct connmgr *mgr) > +connmgr_wants_packet_in_on_miss(struct connmgr *mgr) > OVS_EXCLUDED(ofproto_mutex) > { > struct ofconn *ofconn; > > + ovs_mutex_lock(&ofproto_mutex); > LIST_FOR_EACH (ofconn, node, &mgr->all_conns) { > enum ofputil_protocol protocol = ofconn_get_protocol(ofconn); > > if (ofconn->controller_id == 0 && > (protocol == OFPUTIL_P_NONE || > ofputil_protocol_to_ofp_version(protocol) < OFP13_VERSION)) { > + ovs_mutex_unlock(&ofproto_mutex); > return true; > } > } > + ovs_mutex_unlock(&ofproto_mutex); > + > return false; > } > > -- > 1.7.9.5 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev