diff options
author | 2018-12-14 19:45:22 +0000 | |
---|---|---|
committer | 2019-02-25 14:13:16 +0100 | |
commit | eee995775444b50a74ac479ee98ff88e6df1b01b (patch) | |
tree | 8cc665062bed78ba8f9f030a60c70e91e73c02fc /fs/btrfs/ioctl.c | |
parent | Btrfs: do not overwrite error return value in scrub progress ioctl (diff) | |
download | linux-eee995775444b50a74ac479ee98ff88e6df1b01b.tar.gz linux-eee995775444b50a74ac479ee98ff88e6df1b01b.tar.bz2 linux-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.c | 2 |
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); |