Hi Georges,
Thanks for the fix, LGTM, ack.
Thanks,
Tao Liu
On Fri, Sep 26, 2025 at 11:26 AM Aureau, Georges (Kernel Tools ERT)
<georges.aureau(a)hpe.com> wrote:
>
> 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: devel(a)lists.crash-utility.osci.io
> |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 <georges.aureau(a)hpe.com>
> |--
> |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 -- devel(a)lists.crash-utility.osci.io
> To unsubscribe send an email to devel-leave(a)lists.crash-utility.osci.io
> https://${domain_name}/admin/lists/devel.lists.crash-utility.osci.io/
> Contribution Guidelines:
https://github.com/crash-utility/crash/wiki