commit 9b9ff3e87f66452f468ca5b5e3d864a6c7e460e3
Author: Michael Halcrow <[EMAIL PROTECTED]>
Date:   Fri Feb 16 14:09:25 2007 -0500

    eCryptfs: convert lookup_one_len() to lookup_one_len_nd()
    
    Call the new lookup_one_len_nd() rather than lookup_one_len().  This fixes 
an
    oops when stacked on NFS.
    
    Note that there are still some issues with eCryptfs on NFS having to do with
    directory deletion (I'm not getting an oops, just an -EBUSY).
    
    Signed-off-by: Michael Halcrow <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Josef 'Jeff' Sipek <[EMAIL PROTECTED]>

diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
index 83e94fe..f3f0dcc 100644
--- a/fs/ecryptfs/inode.c
+++ b/fs/ecryptfs/inode.c
@@ -280,7 +280,9 @@ static struct dentry *ecryptfs_lookup(struct inode *dir, 
struct dentry *dentry,
        int rc = 0;
        struct dentry *lower_dir_dentry;
        struct dentry *lower_dentry;
+       struct dentry *dentry_save;
        struct vfsmount *lower_mnt;
+       struct vfsmount *mnt_save;
        char *encoded_name;
        unsigned int encoded_namelen;
        struct ecryptfs_crypt_stat *crypt_stat = NULL;
@@ -308,9 +310,13 @@ static struct dentry *ecryptfs_lookup(struct inode *dir, 
struct dentry *dentry,
        }
        ecryptfs_printk(KERN_DEBUG, "encoded_name = [%s]; encoded_namelen "
                        "= [%d]\n", encoded_name, encoded_namelen);
-       lower_dentry = lookup_one_len(encoded_name, lower_dir_dentry,
-                                     encoded_namelen - 1);
+       dentry_save = nd->dentry;
+       mnt_save = nd->mnt;
+       lower_dentry = lookup_one_len_nd(encoded_name, lower_dir_dentry,
+                                        (encoded_namelen - 1), nd);
        kfree(encoded_name);
+       nd->mnt = mnt_save;
+       nd->dentry = dentry_save;
        if (IS_ERR(lower_dentry)) {
                ecryptfs_printk(KERN_ERR, "ERR from lower_dentry\n");
                rc = PTR_ERR(lower_dentry);
_______________________________________________
unionfs-cvs mailing list: http://unionfs.filesystems.org/
[email protected]
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs-cvs

Reply via email to