Unionfs: handle on lower inodes in lookup
authorErez Zadok <ezk@cs.sunysb.edu>
Thu, 10 Jan 2008 12:02:38 +0000 (07:02 -0500)
committerRachita Kothiyal <rachita@dewey.fsl.cs.sunysb.edu>
Thu, 1 May 2008 23:03:30 +0000 (19:03 -0400)
Signed-off-by: Erez Zadok <ezk@cs.sunysb.edu>
fs/unionfs/dentry.c
fs/unionfs/lookup.c

index 4f67419324ec1320d761a56e532d40b3a75ebdd0..c3e74720e0a64154085de8f83293b47aadaf4b5f 100644 (file)
@@ -169,8 +169,12 @@ static bool __unionfs_d_revalidate_one(struct dentry *dentry,
                        valid = false;
        }
 
-       if (!dentry->d_inode)
+       if (!dentry->d_inode ||
+           ibstart(dentry->d_inode) < 0 ||
+           ibend(dentry->d_inode) < 0) {
                valid = false;
+               goto out;
+       }
 
        if (valid) {
                /*
index d939b5d92a33bed2c0904fa0d0921e21bd9ce6da..117adc75f6d2a0b8904a4100108542e29d98052b 100644 (file)
@@ -160,6 +160,7 @@ struct dentry *unionfs_lookup_backend(struct dentry *dentry,
                        continue;
 
                /* Now do regular lookup; lookup foo */
+               BUG_ON(!lower_dir_dentry);
                lower_dentry = lookup_one_len(name, lower_dir_dentry, namelen);
                if (IS_ERR(lower_dentry)) {
                        dput(first_lower_dentry);