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

From: Myklebust, Trond
Date: Tue Nov 29 2011 - 06:58:32 EST


> -----Original Message-----
> From: Chris Dunlop [mailto:chris@xxxxxxxxxxxx]
> Sent: Tuesday, November 29, 2011 3:25 AM
> To: linux-fsdevel@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; 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@xxxxxxxxxxxxxxxxxxxxx;
> linux-afs@xxxxxxxxxxxxxxxxxxx; codalist@xxxxxxxxxxxxxxxxxxxxxxxx; jfs-
> discussion@xxxxxxxxxxxxxxxxxxxxx; linux-nfs@xxxxxxxxxxxxxxx
> 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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/