From: Edwin Rodriguez Date: Thu, 7 Aug 2025 15:55:19 +0000 (-0400) Subject: mds/MDSDaemon: Safeguard lockup command to prevent undefined behavior with millisecs X-Git-Tag: v21.0.0~50^2~68^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3109f6d50c53e4bf1c39407c7e77f2cdd84ba44e;p=ceph.git mds/MDSDaemon: Safeguard lockup command to prevent undefined behavior with millisecs Ensure 'lockup' command uses a valid millesecond value Fixes: https://tracker.ceph.com/issues/72411 Signed-off-by: Edwin Rodriguez --- diff --git a/src/mds/MDSDaemon.cc b/src/mds/MDSDaemon.cc index b81b39a58160..a2ac5cd87250 100644 --- a/src/mds/MDSDaemon.cc +++ b/src/mds/MDSDaemon.cc @@ -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;