From 11cfa551cc00f8b8921aada8fa22fe515e239e7a Mon Sep 17 00:00:00 2001 From: Mykola Golub Date: Sat, 16 Jan 2021 05:00:09 +0000 Subject: [PATCH] osd: fix potential null pointer dereference when sending ping Fixes: https://tracker.ceph.com/issues/48821 Signed-off-by: Mykola Golub (cherry picked from commit 86576b09973b857ec2fe8195069e21812992db26) --- src/osd/OSD.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 18e7acecdb8b3..668ff851a9a6f 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -5794,6 +5794,11 @@ void OSD::heartbeat() i != heartbeat_peers.end(); ++i) { int peer = i->first; + Session *s = static_cast(i->second.con_back->get_priv().get()); + if (!s) { + dout(30) << "heartbeat osd." << peer << " has no open con" << dendl; + continue; + } dout(30) << "heartbeat sending ping to osd." << peer << dendl; i->second.last_tx = now; @@ -5804,7 +5809,6 @@ void OSD::heartbeat() if (i->second.hb_interval_start == utime_t()) i->second.hb_interval_start = now; - Session *s = static_cast(i->second.con_back->get_priv().get()); std::optional delta_ub; s->stamps->sent_ping(&delta_ub); -- 2.39.5