From: Filipe Manana Date: Fri, 14 Dec 2018 19:45:22 +0000 (+0000) Subject: Btrfs: do not overwrite error return value in the get device stats ioctl X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=eee995775444b50a74ac479ee98ff88e6df1b01b;p=linux.git 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 Signed-off-by: Filipe Manana Signed-off-by: David Sterba --- diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index 02ea03d220e86..7ff60217ec552 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);