[PATCH 1/1] fix d_revalidate oopsen on NFS exports

Myklebust, Trond Trond.Myklebust at netapp.com
Tue Nov 29 06:58:07 EST 2011


> -----Original Message-----
> From: Chris Dunlop [mailto:chris at onthe.net.au]
> Sent: Tuesday, November 29, 2011 3:25 AM
> To: linux-fsdevel at vger.kernel.org; linux-kernel at vger.kernel.org; Eric
Van
> Hensbergen; Ron Minnich; Latchesar Ionkov; David Howells; Jan Harkes;
> maintainer:CODA FILE SYSTEM; Dave Kleikamp; Petr Vandrovec; Myklebust,
> Trond; Greg Kroah-Hartman; Al Viro;
v9fs-developer at lists.sourceforge.net;
> linux-afs at lists.infradead.org; codalist at TELEMANN.coda.cs.cmu.edu; jfs-
> discussion at lists.sourceforge.net; linux-nfs at vger.kernel.org
> Subject: Re: [PATCH 1/1] fix d_revalidate oopsen on NFS exports
> 
> Hi,
> 
> I haven't seen any response to this patch which fixes an Oops in
> d_revalidate. I hit this using NFS, but various other file systems
look to be
> likewise vulnerable, hence the broadness of the patch. The sequence
leading
> to the Oops is:
> 
> lookup_one_len() [fs/namei.c]
>    calls __lookup_hash() [fs/namei.c] with nd == NULL,
>       which can then call the file system specific d_revalidate(),
passing in nd ==
> NULL
>          which will then Oops if nd is used without checking

That's because you are "fixing" the wrong bug and if you'd checked the
list archives, you'd know that this has already been discussed several
times...

By allowing stacked filesystems to pass nd==NULL (the VFS doesn't do
this), you're circumventing  the lookup intent mechanisms and will hit
all sorts of problems further down the road. If you want to fix the
problem, then please fix the broken stacking filesystems to stop using
lookup_one_len...

Trond



More information about the linux-afs mailing list