]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/LogMonitor: fix crash when cluster log file is not writeable 42528/head
authorSage Weil <sage@newdream.net>
Wed, 28 Jul 2021 15:45:19 +0000 (11:45 -0400)
committerSage Weil <sage@newdream.net>
Wed, 28 Jul 2021 15:45:19 +0000 (11:45 -0400)
If we are in this block, then p == channel_fds.end() and p->first is not
valid.

Also, no need to populate channel_fds with an fd of -1.

Fixes: https://tracker.ceph.com/issues/51816
Signed-off-by: Sage Weil <sage@newdream.net>
src/mon/LogMonitor.cc

index 96d0a6181db533156449fe08045618605f4f7fe4..e8b41e585e1ee0af24b8e93129a7180a72184175 100644 (file)
@@ -400,9 +400,10 @@ void LogMonitor::log_external(const LogEntry& le)
        if (fd < 0) {
          int err = -errno;
          dout(1) << "unable to write to '" << log_file << "' for channel '"
-                 << p->first << "': " << cpp_strerror(err) << dendl;
+                 << channel << "': " << cpp_strerror(err) << dendl;
+       } else {
+         channel_fds[channel] = fd;
        }
-       channel_fds[channel] = fd;
       }
     } else {
       fd = p->second;