public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: David Stevens <dlstevens@us.ibm.com>
Cc: rusty@rustcorp.com.au, kvm@vger.kernel.org
Subject: Re: [PATCH] fix vhost ioctl handling for 32-bit
Date: Sun, 20 Dec 2009 14:02:57 +0200	[thread overview]
Message-ID: <20091220120256.GA26263@redhat.com> (raw)
In-Reply-To: <OF2C13AA5B.035759E8-ON8825768F.006B935D-8825768F.006C7C27@us.ibm.com>

On Thu, Dec 17, 2009 at 12:44:55PM -0700, David Stevens wrote:
> VHOST_GET_FEATURES returns high-order garbage on 32-bit
> machines. This patch fixes it to use 64 bits throughout.
> 
>                                         +-DLS
> 
> [in-line for viewing, attached to avoid whitespace mangling]
> 
> Signed-off-by: David L Stevens <dlstevens@us.ibm.com>
> 
> --- a/drivers/vhost/net.c       2009-11-17 22:51:56.000000000 -0800
> +++ b/drivers/vhost/net.c       2009-12-17 11:31:51.000000000 -0800
> @@ -563,7 +563,7 @@
>  {
>         struct vhost_net *n = f->private_data;
>         void __user *argp = (void __user *)arg;
> -       u32 __user *featurep = argp;
> +       u64 __user *featurep = (u64 __user *)argp;
>         struct vhost_vring_file backend;
>         u64 features;
>         int r;
> @@ -577,7 +577,7 @@
>                 features = VHOST_FEATURES;
>                 return put_user(features, featurep);
>         case VHOST_SET_FEATURES:
> -               r = get_user(features, featurep);
> +               r = copy_from_user(&features, featurep, sizeof features);
>                 /* No features for now */
>                 if (r < 0)
>                         return r;
> 

Thanks very much for the report and the patch.
I tweaked the description and the code a bit (both GET and SET need
to be fixed). Could you pls approve this still works for you as well?  Also,
out of interest, could you please share which application and on which
platform are you using vhost net? Thanks!

--->
Subject: vhost: fix high 32 bit in FEATURES ioctls

VHOST_GET_FEATURES fails to initialize high-order 32 bits
in the returned value, and VHOST_SET_FEATURES fails to check them.
This patch fixes it to use 64 bits throughout.

Signed-off-by: David L Stevens <dlstevens@us.ibm.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>

---

diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c
index 22d5fef..d6db10c 100644
--- a/drivers/vhost/net.c
+++ b/drivers/vhost/net.c
@@ -563,7 +563,7 @@ static long vhost_net_ioctl(struct file *f, unsigned int ioctl,
 {
 	struct vhost_net *n = f->private_data;
 	void __user *argp = (void __user *)arg;
-	u32 __user *featurep = argp;
+	u64 __user *featurep = argp;
 	struct vhost_vring_file backend;
 	u64 features;
 	int r;
@@ -575,10 +575,9 @@ static long vhost_net_ioctl(struct file *f, unsigned int ioctl,
 		return vhost_net_set_backend(n, backend.index, backend.fd);
 	case VHOST_GET_FEATURES:
 		features = VHOST_FEATURES;
-		return put_user(features, featurep);
+		return copy_to_user(featurep, &features, sizeof features);
 	case VHOST_SET_FEATURES:
-		r = get_user(features, featurep);
-		/* No features for now */
+		r = copy_from_user(&features, featurep, sizeof features);
 		if (r < 0)
 			return r;
 		if (features & ~VHOST_FEATURES)
-- 
MST

  reply	other threads:[~2009-12-20 12:05 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-17 19:44 [PATCH] fix vhost ioctl handling for 32-bit David Stevens
2009-12-20 12:02 ` Michael S. Tsirkin [this message]
2009-12-21 20:05   ` David Stevens

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=20091220120256.GA26263@redhat.com \
    --to=mst@redhat.com \
    --cc=dlstevens@us.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=rusty@rustcorp.com.au \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox