Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/hch/vfs-queue
* 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/hch/vfs-queue: vfs: add d_prune dentry operation vfs: protect i_nlink filesystems: add set_nlink() filesystems: add missing nlink wrappers logfs: remove unnecessary nlink setting ocfs2: remove unnecessary nlink setting jfs: remove unnecessary nlink setting hypfs: remove unnecessary nlink setting vfs: ignore error on forced remount readlinkat: ensure we return ENOENT for the empty pathname for normal lookups vfs: fix dentry leak in simple_fill_super()
This commit is contained in:
@@ -577,8 +577,7 @@ static int udf_create(struct inode *dir, struct dentry *dentry, int mode,
|
||||
|
||||
fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err);
|
||||
if (!fi) {
|
||||
inode->i_nlink--;
|
||||
mark_inode_dirty(inode);
|
||||
inode_dec_link_count(inode);
|
||||
iput(inode);
|
||||
return err;
|
||||
}
|
||||
@@ -618,8 +617,7 @@ static int udf_mknod(struct inode *dir, struct dentry *dentry, int mode,
|
||||
init_special_inode(inode, mode, rdev);
|
||||
fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err);
|
||||
if (!fi) {
|
||||
inode->i_nlink--;
|
||||
mark_inode_dirty(inode);
|
||||
inode_dec_link_count(inode);
|
||||
iput(inode);
|
||||
return err;
|
||||
}
|
||||
@@ -665,12 +663,11 @@ static int udf_mkdir(struct inode *dir, struct dentry *dentry, int mode)
|
||||
inode->i_fop = &udf_dir_operations;
|
||||
fi = udf_add_entry(inode, NULL, &fibh, &cfi, &err);
|
||||
if (!fi) {
|
||||
inode->i_nlink--;
|
||||
mark_inode_dirty(inode);
|
||||
inode_dec_link_count(inode);
|
||||
iput(inode);
|
||||
goto out;
|
||||
}
|
||||
inode->i_nlink = 2;
|
||||
set_nlink(inode, 2);
|
||||
cfi.icb.extLength = cpu_to_le32(inode->i_sb->s_blocksize);
|
||||
cfi.icb.extLocation = cpu_to_lelb(dinfo->i_location);
|
||||
*(__le32 *)((struct allocDescImpUse *)cfi.icb.impUse)->impUse =
|
||||
@@ -683,7 +680,7 @@ static int udf_mkdir(struct inode *dir, struct dentry *dentry, int mode)
|
||||
|
||||
fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err);
|
||||
if (!fi) {
|
||||
inode->i_nlink = 0;
|
||||
clear_nlink(inode);
|
||||
mark_inode_dirty(inode);
|
||||
iput(inode);
|
||||
goto out;
|
||||
@@ -839,7 +836,7 @@ static int udf_unlink(struct inode *dir, struct dentry *dentry)
|
||||
if (!inode->i_nlink) {
|
||||
udf_debug("Deleting nonexistent file (%lu), %d\n",
|
||||
inode->i_ino, inode->i_nlink);
|
||||
inode->i_nlink = 1;
|
||||
set_nlink(inode, 1);
|
||||
}
|
||||
retval = udf_delete_entry(dir, fi, &fibh, &cfi);
|
||||
if (retval)
|
||||
|
Reference in New Issue
Block a user