Fixes bugs that cased leftover dentries upon unmount, causing oopses.
Signed-off-by: Erez Zadok <ezk@cs.sunysb.edu>
struct inode *inode_grabbed = igrab(inode);
struct dentry *dentry = d_find_alias(inode);
- if (flags & IPERM_FLAG_RCU)
- return -ECHILD;
+ if (flags & IPERM_FLAG_RCU) {
+ err = -ECHILD;
+ goto out_nograb;
+ }
if (dentry)
unionfs_lock_dentry(dentry, UNIONFS_DMUTEX_CHILD);
dput(dentry);
}
iput(inode_grabbed);
+out_nograb:
return err;
}