From: Xiubo Li Date: Mon, 22 Nov 2021 02:33:00 +0000 (+0800) Subject: client: fix crash when iterating and deleting sessions X-Git-Tag: v17.1.0~335^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=98cca5ed5a1b14a459d1a049bd2455b47a508f89;p=ceph.git client: fix crash when iterating and deleting sessions Introduced-by: 730dd8a87a3dbeba348dd419869ac110c57ed47a Fixes: https://tracker.ceph.com/issues/53082 Signed-off-by: Xiubo Li --- diff --git a/src/client/Client.cc b/src/client/Client.cc index 039ede40aeb..4e5e4164c35 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -2866,9 +2866,10 @@ void Client::handle_mds_map(const MConstRef& m) _mdsmap.swap(mdsmap); // reset session - for (auto &p : mds_sessions) { - mds_rank_t mds = p.first; - auto session = p.second; + for (auto p = mds_sessions.begin(); p != mds_sessions.end(); ) { + mds_rank_t mds = p->first; + MetaSessionRef session = p->second; + ++p; int oldstate = _mdsmap->get_state(mds); int newstate = mdsmap->get_state(mds);