]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: fix potential null pointer dereference when sending ping 40277/head
authorMykola Golub <mgolub@suse.com>
Sat, 16 Jan 2021 05:00:09 +0000 (05:00 +0000)
committersinguliere <singuliere@autistici.org>
Sat, 20 Mar 2021 08:05:29 +0000 (09:05 +0100)
Fixes: https://tracker.ceph.com/issues/48821
Signed-off-by: Mykola Golub <mgolub@suse.com>
(cherry picked from commit 86576b09973b857ec2fe8195069e21812992db26)

src/osd/OSD.cc

index 34dd356ebf6e8d2605702a62a4df6243b0c96c13..076c255bd83524259bf3f9472ab63d298355acf0 100644 (file)
@@ -5680,6 +5680,11 @@ void OSD::heartbeat()
        i != heartbeat_peers.end();
        ++i) {
     int peer = i->first;
+    Session *s = static_cast<Session*>(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<Session*>(i->second.con_back->get_priv().get());
     std::optional<ceph::signedspan> delta_ub;
     s->stamps->sent_ping(&delta_ub);