|
|
|
|
|
|
|
|
|
|
xen-devel
[Xen-devel] [PATCH] x86: adjust microcode handling interface
Confine the knowledge that the buffer gets accessed without use of
proper guest handle accessors to a single file.
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
Index: 2006-09-21/xen/arch/x86/microcode.c
===================================================================
--- 2006-09-21.orig/xen/arch/x86/microcode.c 2006-08-28 12:24:50.000000000
+0200
+++ 2006-09-21/xen/arch/x86/microcode.c 2006-09-28 12:24:53.000000000 +0200
@@ -455,7 +455,7 @@ static int do_microcode_update (void)
return error;
}
-int microcode_update(void *buf, unsigned long len)
+int microcode_update(XEN_GUEST_HANDLE(void) buf, unsigned long len)
{
int ret;
@@ -464,10 +464,15 @@ int microcode_update(void *buf, unsigned
return -EINVAL;
}
+ if (len != (typeof(user_buffer_size))len) {
+ printk(KERN_ERR "microcode: too much data\n");
+ return -E2BIG;
+ }
+
mutex_lock(µcode_mutex);
- user_buffer = (void __user *) buf;
- user_buffer_size = (int) len;
+ user_buffer = buf.p;
+ user_buffer_size = len;
ret = do_microcode_update();
Index: 2006-09-21/xen/arch/x86/platform_hypercall.c
===================================================================
--- 2006-09-21.orig/xen/arch/x86/platform_hypercall.c 2006-09-28
12:21:17.000000000 +0200
+++ 2006-09-21/xen/arch/x86/platform_hypercall.c 2006-09-28
12:22:30.000000000 +0200
@@ -104,8 +104,8 @@ long do_platform_op(XEN_GUEST_HANDLE(xen
case XENPF_microcode_update:
{
- extern int microcode_update(void *buf, unsigned long len);
- ret = microcode_update(op->u.microcode.data.p,
+ extern int microcode_update(XEN_GUEST_HANDLE(void), unsigned long len);
+ ret = microcode_update(op->u.microcode.data,
op->u.microcode.length);
}
break;
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-devel] [PATCH] x86: adjust microcode handling interface,
Jan Beulich <=
|
|
|
|
|