From: Ricardo Dias Date: Mon, 14 Jan 2019 11:47:15 +0000 (+0000) Subject: msg/async: msgr2: fix mark_down vs accept race X-Git-Tag: v14.1.0~271^2~28 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f4beb0e7c4e99d0e4a335f8cd0cfd860561bf969;p=ceph.git msg/async: msgr2: fix mark_down vs accept race Msgr2 version of PR #25823 Signed-off-by: Ricardo Dias --- diff --git a/src/msg/async/ProtocolV2.cc b/src/msg/async/ProtocolV2.cc index 03b478b8ef3..0b6f7189617 100644 --- a/src/msg/async/ProtocolV2.cc +++ b/src/msg/async/ProtocolV2.cc @@ -2391,6 +2391,14 @@ CtPtr ProtocolV2::handle_cephx_auth(bufferlist &auth_payload) { connection->lock.lock(); + if (state != ACCEPTING) { + ldout(cct, 1) << __func__ + << " state changed while accept, it must be mark_down" + << dendl; + ceph_assert(state == CLOSED); + return _fault(); + } + session_security.reset( get_auth_session_handler(cct, auth_method, session_key, connection_secret, @@ -2456,6 +2464,14 @@ CtPtr ProtocolV2::handle_auth_request(char *payload, uint32_t length) { nullptr); connection->lock.lock(); + if (state != ACCEPTING) { + ldout(cct, 1) << __func__ + << " state changed while accept, it must be mark_down" + << dendl; + ceph_assert(state == CLOSED); + return _fault(); + } + if (!authorizer_valid) { ldout(cct, 0) << __func__ << " got bad authorizer, auth_reply_len=" << authorizer_reply.length() << dendl;