Message ID | 20181214195017.17822-1-fdmanana@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] Btrfs: do not overwrite scrub error with fault error in scrub ioctl | expand |
On Fri, Dec 14, 2018 at 07:50:17PM +0000, fdmanana@kernel.org wrote: > From: Filipe Manana <fdmanana@suse.com> > > If scrub returned an error and then the copy_to_user() call did not > succeed, we would overwrite the error returned by scrub with -EFAULT. > Fix that by removing the call to copy_to_user() as there is no need > to do it at all. > > Signed-off-by: Filipe Manana <fdmanana@suse.com> > --- > > V2: Leave to copy_to_user() call since progress needs to be reported back > to user space. The changelog does not reflect v2, I'll update the last sentence to "Fix that by calling copy_to_user() only if btrfs_scrub_dev returned success." Thanks. Reviewed-by: David Sterba <dsterba@suse.com>
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index 3a27efa2b955..4c05d9c4fe3d 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c @@ -4301,7 +4301,7 @@ static long btrfs_ioctl_scrub(struct file *file, void __user *arg) &sa->progress, sa->flags & BTRFS_SCRUB_READONLY, 0); - if (copy_to_user(arg, sa, sizeof(*sa))) + if (ret == 0 && copy_to_user(arg, sa, sizeof(*sa))) ret = -EFAULT; if (!(sa->flags & BTRFS_SCRUB_READONLY))