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 <dwysocha@redhat.com>
Signed-off-by: Lianbo Jiang <lijiang@redhat.com>
This commit is contained in:
Lianbo Jiang 2022-12-21 17:09:08 +08:00 committed by Kazuhito Hagio
parent f182d08bab
commit 88a4910d95

View File

@ -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);