Hi Jackie, Thank you for the patch, I think this supercedes the other attempts to fix this issue because this fix mirrors the actual change which occured in the /proc/mounts output (fs/proc_namespace.c::show_sb_opts), which is the equivalent usage of the code here. I've now managed to resurrect my GDB testing environment, and I've tested that this patch works - and the lx-mounts command which this specifically affects is functioning. On 05/03/2019 01:53, Jackie Liu wrote: > Since commit 1751e8a6cb93 ("Rename superblock flags (MS_xyz -> SB_xyz)"), > script/gdb need replace MS_xyz to SB_xyz. > > Fix follow problem: > root@localhost:/data# gdb -q vmlinux > Reading symbols from vmlinux...done. > Traceback (most recent call last): > File "/data/vmlinux-gdb.py", line 32, in <module> > import linux.proc > File "/data/scripts/gdb/linux/proc.py", line 15, in <module> > from linux import constants > File "/data/scripts/gdb/linux/constants.py", line 2, in <module> > LX_SB_RDONLY = MS_RDONLY > NameError: name 'MS_RDONLY' is not defined > (gdb) > > Cc: <stable@xxxxxxxxxxxxxxx> There should be a Fixes tag here, The point of breakage is: Fixes: e262e32d6bde "vfs: Suppress MS_* flag defs within the kernel unless explicitly enabled" I'd like to update the commit message to the following: > Since commit 1751e8a6cb93 ("Rename superblock flags (MS_xyz -> SB_xyz)"), > scripts/gdb should be updated to replace MS_xyz with SB_xyz. > > This change didn't directly affect the running operation of scripts/gdb until > commit e262e32d6bde "vfs: Suppress MS_* flag defs within the kernel unless > explicitly enabled" removed the definitions used by constants.py. > > Update constants.py.in to utilise the new internal flags, matching the > implementation at fs/proc_namespace.c::show_sb_opts. I will repost a v3 with that change, along with my SoB, and retaining your authorship - and ask Andrew to collect the patch. -- Regards Kieran > Tested-by: Nick Desaulniers <ndesaulniers@xxxxxxxxxx> > Signed-off-by: Jackie Liu <liuyun01@xxxxxxxxxx> > --- > scripts/gdb/linux/constants.py.in | 12 ++++++------ > scripts/gdb/linux/proc.py | 12 ++++++------ > 2 files changed, 12 insertions(+), 12 deletions(-) > > diff --git a/scripts/gdb/linux/constants.py.in b/scripts/gdb/linux/constants.py.in > index 7aad82406422..d3319a80788a 100644 > --- a/scripts/gdb/linux/constants.py.in > +++ b/scripts/gdb/linux/constants.py.in > @@ -37,12 +37,12 @@ > import gdb > > /* linux/fs.h */ > -LX_VALUE(MS_RDONLY) > -LX_VALUE(MS_SYNCHRONOUS) > -LX_VALUE(MS_MANDLOCK) > -LX_VALUE(MS_DIRSYNC) > -LX_VALUE(MS_NOATIME) > -LX_VALUE(MS_NODIRATIME) > +LX_VALUE(SB_RDONLY) > +LX_VALUE(SB_SYNCHRONOUS) > +LX_VALUE(SB_MANDLOCK) > +LX_VALUE(SB_DIRSYNC) > +LX_VALUE(SB_NOATIME) > +LX_VALUE(SB_NODIRATIME) > > /* linux/mount.h */ > LX_VALUE(MNT_NOSUID) > diff --git a/scripts/gdb/linux/proc.py b/scripts/gdb/linux/proc.py > index 0aebd7565b03..2f01a958eb22 100644 > --- a/scripts/gdb/linux/proc.py > +++ b/scripts/gdb/linux/proc.py > @@ -114,11 +114,11 @@ def info_opts(lst, opt): > return opts > > > -FS_INFO = {constants.LX_MS_SYNCHRONOUS: ",sync", > - constants.LX_MS_MANDLOCK: ",mand", > - constants.LX_MS_DIRSYNC: ",dirsync", > - constants.LX_MS_NOATIME: ",noatime", > - constants.LX_MS_NODIRATIME: ",nodiratime"} > +FS_INFO = {constants.LX_SB_SYNCHRONOUS: ",sync", > + constants.LX_SB_MANDLOCK: ",mand", > + constants.LX_SB_DIRSYNC: ",dirsync", > + constants.LX_SB_NOATIME: ",noatime", > + constants.LX_SB_NODIRATIME: ",nodiratime"} > > MNT_INFO = {constants.LX_MNT_NOSUID: ",nosuid", > constants.LX_MNT_NODEV: ",nodev", > @@ -184,7 +184,7 @@ values of that process namespace""" > fstype = superblock['s_type']['name'].string() > s_flags = int(superblock['s_flags']) > m_flags = int(vfs['mnt']['mnt_flags']) > - rd = "ro" if (s_flags & constants.LX_MS_RDONLY) else "rw" > + rd = "ro" if (s_flags & constants.LX_SB_RDONLY) else "rw" > > gdb.write( > "{} {} {} {}{}{} 0 0\n" > -- -- Kieran