}
}
+ /* XXX: should this unlock be moved to the function bottom? */
unionfs_unlock_dentry(dentry);
out:
kfree(UNIONFS_F(file));
}
out_nofree:
- unionfs_read_unlock(inode->i_sb);
unionfs_check_inode(inode);
if (!err) {
unionfs_check_file(file);
unionfs_check_dentry(file->f_path.dentry->d_parent);
}
+ unionfs_read_unlock(inode->i_sb);
return err;
}
}
out:
- unionfs_read_unlock(file->f_path.dentry->d_sb);
unionfs_check_file(file);
+ unionfs_read_unlock(file->f_path.dentry->d_sb);
return err;
}
unionfs_copy_attr_times(dentry->d_parent->d_inode);
out:
- unionfs_read_unlock(dentry->d_sb);
unionfs_check_file(file);
+ unionfs_read_unlock(dentry->d_sb);
return err;
}
unionfs_lock_dentry(dentry);
err = __unionfs_d_revalidate_chain(dentry, nd, false);
- unionfs_unlock_dentry(dentry);
if (likely(err > 0)) { /* true==1: dentry is valid */
unionfs_check_dentry(dentry);
unionfs_check_nd(nd);
}
+ unionfs_unlock_dentry(dentry);
unionfs_read_unlock(dentry->d_sb);
err = do_sync_read(file, buf, count, ppos);
out:
- unionfs_read_unlock(file->f_path.dentry->d_sb);
unionfs_check_file(file);
+ unionfs_read_unlock(file->f_path.dentry->d_sb);
return err;
}
err = wait_on_sync_kiocb(iocb);
out:
- unionfs_read_unlock(file->f_path.dentry->d_sb);
unionfs_check_file(file);
+ unionfs_read_unlock(file->f_path.dentry->d_sb);
return err;
}
}
out:
- unionfs_read_unlock(file->f_path.dentry->d_sb);
if (!err) {
/* copyup could cause parent dir times to change */
unionfs_copy_attr_times(file->f_path.dentry->d_parent->d_inode);
unionfs_check_file(file);
unionfs_check_dentry(file->f_path.dentry->d_parent);
}
+ unionfs_read_unlock(file->f_path.dentry->d_sb);
return err;
}
unionfs_copy_attr_times(inode);
out:
- unionfs_read_unlock(file->f_path.dentry->d_sb);
unionfs_check_file(file);
+ unionfs_read_unlock(file->f_path.dentry->d_sb);
return err;
}
unionfs_copy_attr_times(inode);
out:
- unionfs_read_unlock(file->f_path.dentry->d_sb);
unionfs_check_file(file);
+ unionfs_read_unlock(file->f_path.dentry->d_sb);
return err;
}
if (!err)
unionfs_postcopyup_setmnt(dentry);
- unionfs_unlock_dentry(dentry);
- unionfs_read_unlock(dentry->d_sb);
unionfs_check_inode(parent);
if (!err) {
unionfs_check_nd(nd);
}
unionfs_check_dentry(dentry);
+ unionfs_unlock_dentry(dentry);
+ unionfs_read_unlock(dentry->d_sb);
return err;
}
dentry = ret;
/* parent times may have changed */
unionfs_copy_attr_times(dentry->d_parent->d_inode);
- unionfs_unlock_dentry(dentry);
}
unionfs_check_inode(parent);
unionfs_check_dentry(dentry);
unionfs_check_dentry(dentry->d_parent);
unionfs_check_nd(nd);
+ if (!IS_ERR(ret))
+ unionfs_unlock_dentry(dentry);
unionfs_read_unlock(dentry->d_sb);
return ret;
if (!err)
unionfs_postcopyup_setmnt(new_dentry);
- unionfs_unlock_dentry(new_dentry);
- unionfs_unlock_dentry(old_dentry);
-
unionfs_check_inode(dir);
unionfs_check_dentry(new_dentry);
unionfs_check_dentry(old_dentry);
+
+ unionfs_unlock_dentry(new_dentry);
+ unionfs_unlock_dentry(old_dentry);
unionfs_read_unlock(old_dentry->d_sb);
return err;
kfree(name);
if (!err)
unionfs_postcopyup_setmnt(dentry);
- unionfs_unlock_dentry(dentry);
unionfs_check_inode(dir);
unionfs_check_dentry(dentry);
+ unionfs_unlock_dentry(dentry);
unionfs_read_unlock(dentry->d_sb);
return err;
if (!err)
unionfs_copy_attr_times(dentry->d_inode);
- unionfs_unlock_dentry(dentry);
unionfs_check_inode(parent);
unionfs_check_dentry(dentry);
+ unionfs_unlock_dentry(dentry);
unionfs_read_unlock(dentry->d_sb);
return err;
if (!err)
unionfs_postcopyup_setmnt(dentry);
- unionfs_unlock_dentry(dentry);
unionfs_check_inode(dir);
unionfs_check_dentry(dentry);
+ unionfs_unlock_dentry(dentry);
unionfs_read_unlock(dentry->d_sb);
return err;
lower_dentry->d_inode);
out:
- unionfs_unlock_dentry(dentry);
unionfs_check_dentry(dentry);
+ unionfs_unlock_dentry(dentry);
unionfs_read_unlock(dentry->d_sb);
return err;
if (unlikely(!__unionfs_d_revalidate_chain(dentry, nd, false)))
printk(KERN_ERR
"unionfs: put_link failed to revalidate dentry\n");
- unionfs_unlock_dentry(dentry);
unionfs_check_dentry(dentry);
unionfs_check_nd(nd);
kfree(nd_get_link(nd));
+ unionfs_unlock_dentry(dentry);
unionfs_read_unlock(dentry->d_sb);
}
/* if setattr succeeded, then parent dir may have changed */
unionfs_copy_attr_times(dentry->d_parent->d_inode);
out:
- unionfs_unlock_dentry(dentry);
unionfs_check_dentry(dentry);
unionfs_check_dentry(dentry->d_parent);
+ unionfs_unlock_dentry(dentry);
unionfs_read_unlock(dentry->d_sb);
return err;
if (err < 0)
ClearPageUptodate(page);
- unionfs_read_unlock(file->f_path.dentry->d_sb);
unionfs_check_file(file);
+ unionfs_read_unlock(file->f_path.dentry->d_sb);
return err; /* assume all is ok */
}
memset(&buf->f_spare, 0, sizeof(buf->f_spare));
out:
- unionfs_unlock_dentry(dentry);
unionfs_check_dentry(dentry);
+ unionfs_unlock_dentry(dentry);
unionfs_read_unlock(sb);
return err;
}
kfree(new_data);
kfree(new_lower_inodes);
out_error:
- unionfs_write_unlock(sb);
unionfs_check_dentry(sb->s_root);
+ unionfs_write_unlock(sb);
return err;
}
err = vfs_getxattr(lower_dentry, (char *) name, value, size);
out:
- unionfs_unlock_dentry(dentry);
unionfs_check_dentry(dentry);
+ unionfs_unlock_dentry(dentry);
unionfs_read_unlock(dentry->d_sb);
return err;
}
size, flags);
out:
- unionfs_unlock_dentry(dentry);
unionfs_check_dentry(dentry);
+ unionfs_unlock_dentry(dentry);
unionfs_read_unlock(dentry->d_sb);
return err;
}
err = vfs_removexattr(lower_dentry, (char *) name);
out:
- unionfs_unlock_dentry(dentry);
unionfs_check_dentry(dentry);
+ unionfs_unlock_dentry(dentry);
unionfs_read_unlock(dentry->d_sb);
return err;
}
err = vfs_listxattr(lower_dentry, encoded_list, size);
out:
- unionfs_unlock_dentry(dentry);
unionfs_check_dentry(dentry);
+ unionfs_unlock_dentry(dentry);
unionfs_read_unlock(dentry->d_sb);
return err;
}