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