summaryrefslogtreecommitdiff
path: root/fs/btrfs/ioctl.c
diff options
context:
space:
mode:
authorFilipe Manana <fdmanana@suse.com>2018-12-14 19:45:22 +0000
committerDavid Sterba <dsterba@suse.com>2019-02-25 14:13:16 +0100
commiteee995775444b50a74ac479ee98ff88e6df1b01b (patch)
tree8cc665062bed78ba8f9f030a60c70e91e73c02fc /fs/btrfs/ioctl.c
parent4fa99b008fb53ade9bacea51d29b24efee8914a8 (diff)
downloadlwn-eee995775444b50a74ac479ee98ff88e6df1b01b.tar.gz
lwn-eee995775444b50a74ac479ee98ff88e6df1b01b.zip
Btrfs: do not overwrite error return value in the get device stats ioctl
If the call to btrfs_get_dev_stats() 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_get_dev_stats() returned success. Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Signed-off-by: Filipe Manana <fdmanana@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/ioctl.c')
-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 02ea03d220e8..7ff60217ec55 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -4438,7 +4438,7 @@ static long btrfs_ioctl_get_dev_stats(struct btrfs_fs_info *fs_info,
ret = btrfs_get_dev_stats(fs_info, sa);
- if (copy_to_user(arg, sa, sizeof(*sa)))
+ if (ret == 0 && copy_to_user(arg, sa, sizeof(*sa)))
ret = -EFAULT;
kfree(sa);