All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Asias He <asias@redhat.com>
Cc: target-devel@vger.kernel.org, kvm@vger.kernel.org,
	virtualization@lists.linux-foundation.org
Subject: Re: [PATCH 3/4] vhost-net: Free ubuf when vhost_dev_ioctl fails
Date: Sun, 5 May 2013 16:50:07 +0300	[thread overview]
Message-ID: <20130505135007.GB6314@redhat.com> (raw)
In-Reply-To: <1367562318-11989-4-git-send-email-asias@redhat.com>

On Fri, May 03, 2013 at 02:25:17PM +0800, Asias He wrote:
> Free ubuf when vhost_dev_ioctl for VHOST_SET_OWNER fails.
> 
> Signed-off-by: Asias He <asias@redhat.com>
> ---
>  drivers/vhost/net.c | 20 ++++++++++++++++++--
>  1 file changed, 18 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c
> index b2f6b41..eb73217 100644
> --- a/drivers/vhost/net.c
> +++ b/drivers/vhost/net.c
> @@ -152,6 +152,19 @@ void vhost_ubuf_put_and_wait(struct vhost_ubuf_ref *ubufs)
>  	kfree(ubufs);
>  }
>  
> +static void vhost_net_clear_ubuf_info(struct vhost_net *n)
> +{
> +
> +	bool zcopy;
> +	int i;
> +
> +	for (i = 0; i < n->dev.nvqs; ++i) {
> +		zcopy = vhost_zcopy_mask & (0x1 << i);
> +		if (zcopy)
> +			kfree(n->vqs[i].ubuf_info);
> +	}
> +}
> +
>  int vhost_net_set_ubuf_info(struct vhost_net *n)
>  {
>  	bool zcopy;
> @@ -1069,10 +1082,13 @@ static long vhost_net_ioctl(struct file *f, unsigned int ioctl,
>  				goto out;
>  		}
>  		r = vhost_dev_ioctl(&n->dev, ioctl, argp);
> -		if (r == -ENOIOCTLCMD)
> +		if (r == -ENOIOCTLCMD) {
>  			r = vhost_vring_ioctl(&n->dev, ioctl, argp);
> -		else
> +		} else {
> +			if (r < 0 && ioctl == VHOST_SET_OWNER)
> +				vhost_net_clear_ubuf_info(n);
>  			vhost_net_flush(n);
> +		}

This is becoming too complex.
Let's just export vhost_dev_set_owner from vhost.c
and have a separate case statement for VHOST_SET_OWNER.


Also - could you please send a separate series
with bugfixes, so I can apply for 3.10?
Cleanups I will queue for 3.11.

Thanks!

>  out:
>  		mutex_unlock(&n->dev.mutex);
>  		return r;
> -- 
> 1.8.1.4

  reply	other threads:[~2013-05-05 13:50 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-03  6:25 [PATCH 0/4] vhost and vhost-net cleanups Asias He
2013-05-03  6:25 ` [PATCH 1/4] vhost: Remove comments for hdr in vhost.h Asias He
2013-05-03  6:25 ` [PATCH 2/4] vhost: Simplify dev->vqs[i] access Asias He
2013-05-03  6:25 ` [PATCH 3/4] vhost-net: Free ubuf when vhost_dev_ioctl fails Asias He
2013-05-05 13:50   ` Michael S. Tsirkin [this message]
2013-05-06  3:17     ` Asias He
2013-05-03  6:25 ` [PATCH 4/4] vhost-net: Cleanup vhost_ubuf adn vhost_zcopy Asias He
2013-05-06  8:17   ` Michael S. Tsirkin
2013-05-06  8:25     ` Asias He
2013-05-06  8:25     ` Asias He
2013-05-03  6:25 ` Asias He

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=20130505135007.GB6314@redhat.com \
    --to=mst@redhat.com \
    --cc=asias@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=target-devel@vger.kernel.org \
    --cc=virtualization@lists.linux-foundation.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.