struct inode *lower_inode = NULL;
int err = 0;
int bindex, bstart, bend;
- const int is_file = !S_ISDIR(inode->i_mode);
+ int is_file;
const int write_mask = (mask & MAY_WRITE) && !(mask & MAY_READ);
- struct inode *inode_grabbed = igrab(inode);
- struct dentry *dentry = d_find_alias(inode);
+ struct inode *inode_grabbed;
+ struct dentry *dentry;
if (flags & IPERM_FLAG_RCU) {
err = -ECHILD;
goto out_nograb;
}
+ dentry = d_find_alias(inode);
if (dentry)
unionfs_lock_dentry(dentry, UNIONFS_DMUTEX_CHILD);
+ inode_grabbed = igrab(inode);
+ is_file = !S_ISDIR(inode->i_mode);
+
if (!UNIONFS_I(inode)->lower_inodes) {
if (is_file) /* dirs can be unlinked but chdir'ed to */
err = -ESTALE; /* force revalidate */