2011-02-17 01:53:57

by Al Viro

[permalink] [raw]
Subject: please, remove the abuse of vfs_path_lookup() in ecryptfs

commit 21edad32205e97dc7ccb81a85234c77e760364c8 (
ecryptfs: dont call lookup_one_len to avoid NULL nameidata) is badly
misguided. The last thing we need is extra places where nameidata is
passed around.

The current code is simply wrong - it's bypassing dcache
lookups in new_lower_dentry(). Besides, abuse of vfs_path_lookup()
here is a Bad Idea(tm). No, filesystems are *not* allowed to die
if ->d_revalidate()/->lookup()/->create() are called with NULL
nameidata. Eventually these methods will lose nameidata * anyway -
starting with ->d_revalidate() in the next cycle at the latest
(i.e. if we run into something really stinky in RCU mess, it might
happen before -final).

Please revert that.


2011-02-18 03:45:49

by Tyler Hicks

[permalink] [raw]
Subject: Re: please, remove the abuse of vfs_path_lookup() in ecryptfs

On Thu Feb 17, 2011 at 01:53:50AM +0000, Al Viro <[email protected]> wrote:
> commit 21edad32205e97dc7ccb81a85234c77e760364c8 (
> ecryptfs: dont call lookup_one_len to avoid NULL nameidata) is badly
> misguided. The last thing we need is extra places where nameidata is
> passed around.

Thanks, Al. I reverted that patch and pushed it to
git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6.git#next

I'll get a pull request together for Linus in the next day or two.

>
> The current code is simply wrong - it's bypassing dcache
> lookups in new_lower_dentry(). Besides, abuse of vfs_path_lookup()
> here is a Bad Idea(tm). No, filesystems are *not* allowed to die
> if ->d_revalidate()/->lookup()/->create() are called with NULL
> nameidata.

I fixed the eCryptfs d_revalidate, lookup, and create paths to not choke
when handed NULL nameidata. I don't think we would have ever received
NULL nameidata since we don't allow eCryptfs on eCryptfs or export to
NFS.

Tyler