Skip to content

Commit 82349c4

Browse files
committed
mds/Locker: use ceph_abort_msg() instead of ceph_assert()
This ceph_assert() always fails, but depending on the configuration value `ceph_assert_supresssions`, execution may continue, but the `dir` variable is left uninitialized. This leads to a compiler warning: /home/jenkins-build/build/workspace/ceph-api/src/mds/Locker.cc:451:22: error: variable 'dir' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized] clang then suggests to nullptr-initialize the variable: /home/jenkins-build/build/workspace/ceph-api/src/mds/Locker.cc:447:11: note: initialize the variable 'dir' to silence this warning 447 | CDir *dir; | ^ | = nullptr This, however, is a very bad idea because all this does is suppress the warning; it still crashes the process. Since there's no recovery from this problem, let's switch to ceph_abort_msg() which is [[noreturn]] and the compiler can deduce that `dir` is always initialized when it's used. Signed-off-by: Max Kellermann <[email protected]>
1 parent e3b2df6 commit 82349c4

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

src/mds/Locker.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -451,7 +451,7 @@ bool Locker::acquire_locks(const MDRequestRef& mdr,
451451
} else if (CDentry *dn = dynamic_cast<CDentry*>(object)) {
452452
dir = dn->get_dir();
453453
} else {
454-
ceph_assert(0 == "unknown type of lock parent");
454+
ceph_abort_msg("unknown type of lock parent");
455455
}
456456
if (dir->get_inode() == mdr->lock_cache->get_dir_inode()) {
457457
// forcibly auth pin if there is lock cache on parent dir

0 commit comments

Comments
 (0)