Hi Georges, Thanks for v2, LGTM, ack.
Thanks, Tao Liu On Tue, Sep 30, 2025 at 7:14 PM Aureau, Georges (Kernel Tools ERT) <[email protected]> wrote: > > [PATCH 2/v2] Fix "mount" MNT_CURSOR (kernels 5.8-6.7): > > Fix "mount" MNT_CURSOR entries (kernels 5.8-6.7): > > crash> mount > mount.out > WARNING: cannot get super_block from vfsmnt: 0xff35d65eb1cc1820 > crash> struct mount.mnt.mnt_sb,mnt.mnt_flags -x 0xff35d65eb1cc1820 > mnt.mnt_sb = 0x0, > mnt.mnt_flags = 0x10000000, > > When crashing with running "findmnt" commands, the mount list will > have entries with mnt.mnt_flags==MNT_CURSOR (and mnt.mnt_sb==NULL). > Such entries should be skipped without errors. > > Signed-off-by: Georges Aureau <[email protected]> > -- > defs.h | 2 ++ > filesys.c | 15 +++++++++++++++ > symbols.c | 4 ++++ > 3 files changed, 21 insertions(+) > > diff --git a/defs.h b/defs.h > index 156ac02..3fd7d89 100644 > --- a/defs.h > +++ b/defs.h > @@ -2274,6 +2274,8 @@ struct offset_table { /* stash of > commonly-used offsets */ > long request_queue_tag_set; > long blk_mq_tag_set_flags; > long blk_mq_tag_set_shared_tags; > + long vfsmount_mnt_flags; > + long proc_mounts_cursor; > }; > > struct size_table { /* stash of commonly-used sizes */ > diff --git a/filesys.c b/filesys.c > index 8d13807..1f8803d 100644 > --- a/filesys.c > +++ b/filesys.c > @@ -1367,6 +1367,10 @@ cmd_mount(void) > close_tmpfile(); > } > > +/* For kernels 5.8-6.7, we're skipping show mount cursor entries. > + */ > +#define MNT_CURSOR 0x10000000 > + > /* > * Do the work for cmd_mount(); > */ > @@ -1492,6 +1496,15 @@ show_mounts(ulong one_vfsmount, int flags, struct > task_context *namespace_contex > > sbp = ULONG(vfsmount_buf + OFFSET(vfsmount_mnt_sb)); > if (!IS_KVADDR(sbp)) { > + if (sbp == 0 && VALID_MEMBER(proc_mounts_cursor) && > + VALID_MEMBER(vfsmount_mnt_flags)) { > + int mnt_flags = INT(vfsmount_buf + > OFFSET(vfsmount_mnt_flags)); > + if (mnt_flags == MNT_CURSOR) { > + if (CRASHDEBUG(1)) > + fprintf(stderr,"skipped > cursor vfsmnt: 0x%lx\n", *vfsmnt); > + continue; > + } > + } > error(WARNING, "cannot get super_block from vfsmnt: > 0x%lx\n", *vfsmnt); > continue; > } > @@ -2081,6 +2094,8 @@ vfs_init(void) > if (INVALID_MEMBER(vfsmount_mnt_devname)) > MEMBER_OFFSET_INIT(mount_mnt_mountpoint, > "mount", "mnt_mountpoint"); > + MEMBER_OFFSET_INIT(vfsmount_mnt_flags, "vfsmount", "mnt_flags"); > + MEMBER_OFFSET_INIT(proc_mounts_cursor, "proc_mounts", "cursor"); > MEMBER_OFFSET_INIT(mount_mnt, "mount", "mnt"); > MEMBER_OFFSET_INIT(namespace_root, "namespace", "root"); > MEMBER_OFFSET_INIT(task_struct_nsproxy, "task_struct", "nsproxy"); > diff --git a/symbols.c b/symbols.c > index 112bcc6..fd91c2e 100644 > --- a/symbols.c > +++ b/symbols.c > @@ -10691,6 +10691,10 @@ dump_offset_table(char *spec, ulong makestruct) > OFFSET(vfsmount_mnt_mountpoint)); > fprintf(fp, " vfsmount_mnt_parent: %ld\n", > OFFSET(vfsmount_mnt_parent)); > + fprintf(fp, " vfsmount_mnt_flags: %ld\n", > + OFFSET(vfsmount_mnt_flags)); > + fprintf(fp, " proc_mounts_cursor: %ld\n", > + OFFSET(proc_mounts_cursor)); > fprintf(fp, " mount_mnt_parent: %ld\n", > OFFSET(mount_mnt_parent)); > fprintf(fp, " mount_mnt_mountpoint: %ld\n", > -- > 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 -- 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
