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
next prev parent 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