summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/btrfs/ioctl.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index 5d67858..ab429fe 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -646,6 +646,7 @@ static int btrfs_ioctl_defrag(struct file *file)
break;
}
+ mnt_drop_write(file->f_path.mnt);
return 0;
}
@@ -730,8 +731,10 @@ static long btrfs_ioctl_clone(struct file *file, unsigned long srcfd,
return ret;
src_file = fget(srcfd);
- if (!src_file)
- return -EBADF;
+ if (!src_file) {
+ ret = -EBADF;
+ goto out_drop_write;
+ }
src = src_file->f_dentry->d_inode;
ret = -EINVAL;
@@ -982,6 +985,8 @@ out_unlock:
btrfs_free_path(path);
out_fput:
fput(src_file);
+out_drop_write:
+ mnt_drop_write(file->f_path.mnt);
return ret;
}