]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: fix potential null pointer dereference when sending ping 38931/head
authorMykola Golub <mgolub@suse.com>
Sat, 16 Jan 2021 05:00:09 +0000 (05:00 +0000)
committerMykola Golub <mgolub@suse.com>
Sat, 16 Jan 2021 05:00:09 +0000 (05:00 +0000)
Fixes: https://tracker.ceph.com/issues/48821
Signed-off-by: Mykola Golub <mgolub@suse.com>
src/osd/OSD.cc

index 61666c392376ae40f2c442742b737d4dcbe39f09..b8273e5585ad770094bcec4778ed2673c87ae703 100644 (file)
@@ -5792,6 +5792,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;
@@ -5802,7 +5807,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);