]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds/MDSDaemon: Safeguard lockup command to prevent undefined behavior with millisecs 64958/head
authorEdwin Rodriguez <edwin.rodriguez1@ibm.com>
Thu, 7 Aug 2025 15:55:19 +0000 (11:55 -0400)
committerEdwin Rodriguez <edwin.rodriguez1@ibm.com>
Mon, 25 Aug 2025 17:20:07 +0000 (13:20 -0400)
Ensure 'lockup' command uses a valid millesecond value

Fixes: https://tracker.ceph.com/issues/72411
Signed-off-by: Edwin Rodriguez <edwin.rodriguez1@ibm.com>
src/mds/MDSDaemon.cc

index b81b39a5816083cc91a6f29b17ec2a3702a49c12..a2ac5cd872500ad27aee8cd98d2b67764e8b84cb 100644 (file)
@@ -164,12 +164,16 @@ void MDSDaemon::asok_command(
     dump_status(f);
     r = 0;
   } else if (command == "lockup") {
-    int64_t millisecs;
-    cmd_getval(cmdmap, "millisecs", millisecs);
-    derr << "(lockup) sleeping with mds_lock for " << millisecs << dendl;
-    std::lock_guard l(mds_lock);
-    std::this_thread::sleep_for(std::chrono::milliseconds(millisecs));
-    r = 0;
+    int64_t millisecs{};
+    if (cmd_getval(cmdmap, "millisecs", millisecs)) {
+      derr << "(lockup) sleeping with mds_lock for " << millisecs << dendl;
+      std::lock_guard l(mds_lock);
+      std::this_thread::sleep_for(std::chrono::milliseconds(millisecs));
+      r = 0;
+    } else {
+      ss << "millisecs setting not found";
+      r = -EINVAL;
+    }
   } else if (command == "exit") {
     outbl.append("Exiting...\n");
     r = 0;