From f023e000e3dbaf2304121dcb90a546d6608a5b3a 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 34dd356ebf6e8..076c255bd8352 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -5680,6 +5680,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; @@ -5690,7 +5695,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