From 5eba2795fc5d4e833e9827ce18f6167e382bf0e1 Mon Sep 17 00:00:00 2001 From: Alex Wang Date: Tue, 29 Jul 2014 10:50:07 -0700 Subject: [PATCH] connmgr: Make call to connmgr_wants_packet_in_on_miss() thread safe. connmgr_wants_packet_in_on_miss() is called by multiple threads and thusly should be protected by the mutex. Signed-off-by: Alex Wang Acked-by: Andy Zhou Acked-by: Ethan Jackson --- ofproto/connmgr.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ofproto/connmgr.c b/ofproto/connmgr.c index 5861627b6..95643900c 100644 --- a/ofproto/connmgr.c +++ b/ofproto/connmgr.c @@ -1568,19 +1568,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; } -- 2.20.1