summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFilipe Manana <fdmanana@suse.com>2018-12-14 19:45:13 +0000
committerDavid Sterba <dsterba@suse.com>2019-02-25 14:13:16 +0100
commit4fa99b008fb53ade9bacea51d29b24efee8914a8 (patch)
tree8c5352262ec362e9c8f84de3eba581abf106b252
parent06fe39ab15a6a47d4979460fcc17d33b1d72ccf9 (diff)
downloadlinux-stable-4fa99b008fb53ade9bacea51d29b24efee8914a8.tar.gz
linux-stable-4fa99b008fb53ade9bacea51d29b24efee8914a8.tar.bz2
linux-stable-4fa99b008fb53ade9bacea51d29b24efee8914a8.zip
Btrfs: do not overwrite error return value in scrub progress ioctl
If the call to btrfs_scrub_progress() failed we would overwrite the error returned to user space with -EFAULT if the call to copy_to_user() failed as well. Fix that by calling copy_to_user() only if btrfs_scrub_progress() returned success. Reviewed-by: Nikolay Borisov <nborisov@suse.com> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Reviewed-by: Anand Jain <anand.jain@oracle.com> Signed-off-by: Filipe Manana <fdmanana@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r--fs/btrfs/ioctl.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index d34e54d80149..02ea03d220e8 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -4414,7 +4414,7 @@ static long btrfs_ioctl_scrub_progress(struct btrfs_fs_info *fs_info,
ret = btrfs_scrub_progress(fs_info, sa->devid, &sa->progress);
- if (copy_to_user(arg, sa, sizeof(*sa)))
+ if (ret == 0 && copy_to_user(arg, sa, sizeof(*sa)))
ret = -EFAULT;
kfree(sa);