Re: "fs/namei.c: keep track of nd->root refcount status" causes boot panic

From: Al Viro
Date: Tue Sep 03 2019 - 09:48:37 EST


On Tue, Sep 03, 2019 at 06:04:56AM -0700, Christoph Hellwig wrote:
> On Tue, Sep 03, 2019 at 01:37:19PM +0100, Al Viro wrote:
> > On Tue, Sep 03, 2019 at 12:21:36AM -0400, Qian Cai wrote:
> > > The linux-next commit "fs/namei.c: keep track of nd->root refcount statusâ [1] causes boot panic on all
> > > architectures here on todayâs linux-next (0902). Reverted it will fix the issue.
> >
> > <swearing>
> >
> > OK, I see what's going on. Incremental to be folded in:
> >
> > diff --git a/include/linux/namei.h b/include/linux/namei.h
> > index 20ce2f917ef4..2ed0942a67f8 100644
> > --- a/include/linux/namei.h
> > +++ b/include/linux/namei.h
> > @@ -20,8 +20,8 @@ enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND};
> > #define LOOKUP_FOLLOW 0x0001 /* follow links at the end */
> > #define LOOKUP_DIRECTORY 0x0002 /* require a directory */
> > #define LOOKUP_AUTOMOUNT 0x0004 /* force terminal automount */
> > -#define LOOKUP_EMPTY 0x4000 /* accept empty path [user_... only] */
> > -#define LOOKUP_DOWN 0x8000 /* follow mounts in the starting point */
> > +#define LOOKUP_EMPTY 0x8000 /* accept empty path [user_... only] */
> > +#define LOOKUP_DOWN 0x10000 /* follow mounts in the starting point */
> >
> > #define LOOKUP_REVAL 0x0020 /* tell ->d_revalidate() to trust no cache */
> > #define LOOKUP_RCU 0x0040 /* RCU pathwalk mode; semi-internal */
>
> Any chance to keep these ordered numerically to avoid someone else
> introdcing this kind of bug again later on?

Not sure what would be the best way to do it... I don't mind breaking
the out-of-tree modules, whatever their license is; what I would rather
avoid is _quiet_ breaking of such.