Should read "mount | grep tmpfs" (and not "grep /tmp/test"):
crash> mount | grep tmpfs ffff9648e7febc00 ffff9648d91ac800 tmpfs tmpfs /tmp/test ffff9648c9281380 ffff9648d91ac800 tmpfs tmpfs /tmp/test/ ffff9648c8e9a700 ffff9648d91ac800 tmpfs tmpfs / |-----Original Message----- |From: Aureau, Georges (Kernel Tools ERT) |Sent: Tuesday, September 23, 2025 10:08 AM |To: [email protected] |Subject: [PATCH] Fix get_pathname() not handling stacked mounts | |[PATCH] Fix get_pathname() not handling stacked mounts | |This get_pathname() issue can be duplicated as follow: | |sudo mkdir -p /tmp/test |sudo mount -t tmpfs tmpfs /tmp/test |sudo mount --make-private /tmp/test |sudo mount --bind /tmp/test /tmp/test |sudo mount --bind /tmp/test /tmp/test |sudo mount -o remount,ro /tmp/test | |$ sudo crash /usr/lib/debug/boot/vmlinux-$(uname -r) |crash> mount | grep /tmp/test |ffff9648e7febc00 ffff9648d91ac800 tmpfs tmpfs /tmp/test |ffff9648c9281380 ffff9648d91ac800 tmpfs tmpfs /tmp/test/ |ffff9648c8e9a700 ffff9648d91ac800 tmpfs tmpfs / | |The last mount is not printed properly, and this is impacting diagnostic |when looking at vmcore from complex containers mount environments. | |Signed-off-by: Georges Aureau <[email protected]> |-- |diff --git a/filesys.c b/filesys.c |index 8d13807..af6d616 100644 |--- a/filesys.c |+++ b/filesys.c |@@ -3140,6 +3154,7 @@ get_pathname(ulong dentry, char *pathname, int |length, int full, ulong vfsmnt) | tmp_vfsmnt = vfsmnt; | | do { |+ more_vfsmnt: | tmp_dentry = parent; | | dentry_buf = fill_dentry_cache(tmp_dentry); |@@ -3195,6 +3210,7 @@ get_pathname(ulong dentry, char *pathname, int |length, int full, ulong vfsmnt) | break; | else | tmp_vfsmnt = mnt_parent; |+ goto more_vfsmnt; | } | } else if (VALID_STRUCT(mount)) { | if (tmp_vfsmnt) { |@@ -3213,6 +3229,7 @@ get_pathname(ulong dentry, char *pathname, int |length, int full, ulong vfsmnt) | break; | else | tmp_vfsmnt = mnt_parent + |OFFSET(mount_mnt); |+ goto more_vfsmnt; | } | } | else { |@@ -3222,6 +3239,9 @@ get_pathname(ulong dentry, char *pathname, int |length, int full, ulong vfsmnt) | } | | } while (tmp_dentry != parent && parent); |+ if (!STREQ(pathname, "/") && LASTCHAR(pathname) == '/') { |+ LASTCHAR(pathname) = '\0'; |+ } | | if (mnt_buf) | FREEBUF(mnt_buf); -- Crash-utility mailing list -- [email protected] To unsubscribe send an email to [email protected] https://${domain_name}/admin/lists/devel.lists.crash-utility.osci.io/ Contribution Guidelines: https://github.com/crash-utility/crash/wiki
