All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anand Jain <anand.jain@oracle.com>
To: fdmanana@kernel.org
Cc: linux-btrfs@vger.kernel.org
Subject: Re: [PATCH] Btrfs: do not overwrite error return value in the balance ioctl
Date: Mon, 17 Dec 2018 16:25:35 +0800	[thread overview]
Message-ID: <9c378108-591d-e275-8898-3c67d97156fa@oracle.com> (raw)
In-Reply-To: <20181214194541.21891-1-fdmanana@kernel.org>



On 12/15/2018 03:45 AM, fdmanana@kernel.org wrote:
> From: Filipe Manana <fdmanana@suse.com>
> 
> If the call to btrfs_balance() 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_balance()
> returned success.
> 
> Signed-off-by: Filipe Manana <fdmanana@suse.com>
> ---
>   fs/btrfs/ioctl.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
> index abe45fd97ab5..4ad7288f77d0 100644
> --- a/fs/btrfs/ioctl.c
> +++ b/fs/btrfs/ioctl.c
> @@ -4707,7 +4707,7 @@ static long btrfs_ioctl_balance(struct file *file, void __user *arg)
>   	ret = btrfs_balance(fs_info, bctl, bargs);
>   	bctl = NULL;
>   
> -	if (arg) {
> +	if (ret == 0 && arg) {
>   		if (copy_to_user(arg, bargs, sizeof(*bargs)))
>   			ret = -EFAULT;
>   	}
> 

This changes the BTRFS_IOC_BALANCE_V2 semantics.

Originally, if BTRFS_IOC_BALANCE_V2 is failed/canceled we do update
bargs [1] and copy to user land, but after this patch we copy only
if the ioctl is successful. I doubt if David is OK with that.

[1]
----------
3717 int btrfs_balance(struct btrfs_fs_info *fs_info,
3718                   struct btrfs_balance_control *bctl,
3719                   struct btrfs_ioctl_balance_args *bargs)
3720 {
::

3855         ret = __btrfs_balance(fs_info);
3856
3857         mutex_lock(&fs_info->balance_mutex);
3858         clear_bit(BTRFS_FS_BALANCE_RUNNING, &fs_info->flags);
3859
3860         if (bargs) {
3861                 memset(bargs, 0, sizeof(*bargs));
3862                 btrfs_update_ioctl_balance_args(fs_info, bargs);
3863         }


  reply	other threads:[~2018-12-17  8:25 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-14 19:45 [PATCH] Btrfs: do not overwrite error return value in the balance ioctl fdmanana
2018-12-17  8:25 ` Anand Jain [this message]
2018-12-17  9:24   ` Filipe Manana
2019-01-02 18:28     ` David Sterba
2019-01-08 11:42 ` [PATCH v2] " fdmanana
2019-01-08 15:58   ` David Sterba

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9c378108-591d-e275-8898-3c67d97156fa@oracle.com \
    --to=anand.jain@oracle.com \
    --cc=fdmanana@kernel.org \
    --cc=linux-btrfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.