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.
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