From 98ae348219d19a1eff21d3278a004a3b61e7504e Mon Sep 17 00:00:00 2001 From: Edwin Rodriguez Date: Thu, 7 Aug 2025 11:55:19 -0400 Subject: [PATCH] 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 --- src/mds/MDSDaemon.cc | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/mds/MDSDaemon.cc b/src/mds/MDSDaemon.cc index b81b39a5816..a2ac5cd8725 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; -- 2.39.5