applied: 
https://github.com/crash-utility/crash/commit/c62b31700e700251ff4d93302d96607ac8ef872a

On Thu, Oct 2, 2025 at 12:04 PM Tao Liu <[email protected]> wrote:
>
> 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

Reply via email to