From 1c56f2a37c79fa07c64dce34605d7b4a8a903243 Mon Sep 17 00:00:00 2001 From: Lianbo Jiang Date: Wed, 21 Dec 2022 17:09:08 +0800 Subject: [PATCH 50/89] Fix "mount" command to appropriately display the mount dumps Recently the following failure has been observed on some vmcores when using the mount command: crash> mount MOUNT SUPERBLK TYPE DEVNAME DIRNAME ffff97a4818a3480 ffff979500013800 rootfs none / ffff97e4846ca700 ffff97e484653000 sysfs sysfs /sys ... ffff97b484753420 0 mount: invalid kernel virtual address: 0 type: "super_block buffer" The kernel virtual address of the super_block is zero when the mount command fails with the vfsmnt address 0xffff97b484753420. And the remaining mount information will be discarded. That is not expected. Check the address and skip it with a warning, if this is an invalid kernel virtual address, that can avoid truncating the remaining mount dumps. Reported-by: Dave Wysochanski Signed-off-by: Lianbo Jiang --- filesys.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/filesys.c b/filesys.c index c2ea78de821d..d64b54a9b822 100644 --- a/filesys.c +++ b/filesys.c @@ -1491,6 +1491,10 @@ show_mounts(ulong one_vfsmount, int flags, struct task_context *namespace_contex } sbp = ULONG(vfsmount_buf + OFFSET(vfsmount_mnt_sb)); + if (!IS_KVADDR(sbp)) { + error(WARNING, "cannot get super_block from vfsmnt: 0x%lx\n", *vfsmnt); + continue; + } if (flags) fprintf(fp, "%s", mount_hdr); -- 2.37.1