2011-05-24 05:51:40

by Heiko Carstens

[permalink] [raw]
Subject: [PATCH] kvm: add missing void __user * cast to access_ok() call

From: Heiko Carstens <[email protected]>

fa3d315a "KVM: Validate userspace_addr of memslot when registered" introduced
this new warning onn s390:

kvm_main.c: In function '__kvm_set_memory_region':
kvm_main.c:654:7: warning: passing argument 1 of '__access_ok' makes pointer from integer without a cast
arch/s390/include/asm/uaccess.h:53:19: note: expected 'const void *' but argument is of type '__u64'

Add the missing cast to get rid of it again...

Cc: Takuya Yoshikawa <[email protected]>
Signed-off-by: Heiko Carstens <[email protected]>
---
virt/kvm/kvm_main.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -651,7 +651,8 @@ int __kvm_set_memory_region(struct kvm *
/* We can read the guest memory with __xxx_user() later on. */
if (user_alloc &&
((mem->userspace_addr & (PAGE_SIZE - 1)) ||
- !access_ok(VERIFY_WRITE, mem->userspace_addr, mem->memory_size)))
+ !access_ok(VERIFY_WRITE, (void __user *)mem->userspace_addr,
+ mem->memory_size)))
goto out;
if (mem->slot >= KVM_MEMORY_SLOTS + KVM_PRIVATE_MEM_SLOTS)
goto out;


2011-05-24 06:58:21

by Takuya Yoshikawa

[permalink] [raw]
Subject: Re: [PATCH] kvm: add missing void __user * cast to access_ok() call

On Tue, 24 May 2011 07:51:27 +0200
Heiko Carstens <[email protected]> wrote:

> From: Heiko Carstens <[email protected]>
>
> fa3d315a "KVM: Validate userspace_addr of memslot when registered" introduced
> this new warning onn s390:
>
> kvm_main.c: In function '__kvm_set_memory_region':
> kvm_main.c:654:7: warning: passing argument 1 of '__access_ok' makes pointer from integer without a cast
> arch/s390/include/asm/uaccess.h:53:19: note: expected 'const void *' but argument is of type '__u64'
>
> Add the missing cast to get rid of it again...
>

Looks good to me, thank you!

I should have checked s390's type checking...

Takuya


> Cc: Takuya Yoshikawa <[email protected]>
> Signed-off-by: Heiko Carstens <[email protected]>
> ---
> virt/kvm/kvm_main.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> --- a/virt/kvm/kvm_main.c
> +++ b/virt/kvm/kvm_main.c
> @@ -651,7 +651,8 @@ int __kvm_set_memory_region(struct kvm *
> /* We can read the guest memory with __xxx_user() later on. */
> if (user_alloc &&
> ((mem->userspace_addr & (PAGE_SIZE - 1)) ||
> - !access_ok(VERIFY_WRITE, mem->userspace_addr, mem->memory_size)))
> + !access_ok(VERIFY_WRITE, (void __user *)mem->userspace_addr,
> + mem->memory_size)))
> goto out;
> if (mem->slot >= KVM_MEMORY_SLOTS + KVM_PRIVATE_MEM_SLOTS)
> goto out;


--
Takuya Yoshikawa <[email protected]>

2011-05-24 14:46:14

by Avi Kivity

[permalink] [raw]
Subject: Re: [PATCH] kvm: add missing void __user * cast to access_ok() call

On 05/24/2011 08:51 AM, Heiko Carstens wrote:
> From: Heiko Carstens<[email protected]>
>
> fa3d315a "KVM: Validate userspace_addr of memslot when registered" introduced
> this new warning onn s390:
>
> kvm_main.c: In function '__kvm_set_memory_region':
> kvm_main.c:654:7: warning: passing argument 1 of '__access_ok' makes pointer from integer without a cast
> arch/s390/include/asm/uaccess.h:53:19: note: expected 'const void *' but argument is of type '__u64'
>
> Add the missing cast to get rid of it again...
>

Thanks, applied, and queued for 2.6.40/2.8.0/3.0/2011.1, as the case may be.

--
error compiling committee.c: too many arguments to function