mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
[XEN] Fix guest-access macros.
From: Christoph Egger <Christoph.Egger@amd.com>
This commit is contained in:
1 parent
a5e0c983d0
commit
51baeaf819
1 file changed
+9
-9
@@ -32,7 +32,7 @@
|
||||
* specifying an offset into the guest array.
|
||||
*/
|
||||
#define copy_to_guest_offset(hnd, off, ptr, nr) ({ \
|
||||
const typeof(ptr) _x = (hnd).p; \
|
||||
typeof(ptr) _x = (hnd).p; \
|
||||
const typeof(ptr) _y = (ptr); \
|
||||
is_hvm_vcpu(current) ? \
|
||||
copy_to_user_hvm(_x+(off), _y, sizeof(*_x)*(nr)) : \
|
||||
@@ -45,7 +45,7 @@
|
||||
*/
|
||||
#define copy_from_guest_offset(ptr, hnd, off, nr) ({ \
|
||||
const typeof(ptr) _x = (hnd).p; \
|
||||
const typeof(ptr) _y = (ptr); \
|
||||
typeof(ptr) _y = (ptr); \
|
||||
is_hvm_vcpu(current) ? \
|
||||
copy_from_user_hvm(_y, _x+(off), sizeof(*_x)*(nr)) :\
|
||||
copy_from_user(_y, _x+(off), sizeof(*_x)*(nr)); \
|
||||
@@ -53,7 +53,7 @@
|
||||
|
||||
/* Copy sub-field of a structure to guest context via a guest handle. */
|
||||
#define copy_field_to_guest(hnd, ptr, field) ({ \
|
||||
const typeof(&(ptr)->field) _x = &(hnd).p->field; \
|
||||
typeof(&(ptr)->field) _x = &(hnd).p->field; \
|
||||
const typeof(&(ptr)->field) _y = &(ptr)->field; \
|
||||
is_hvm_vcpu(current) ? \
|
||||
copy_to_user_hvm(_x, _y, sizeof(*_x)) : \
|
||||
@@ -63,7 +63,7 @@
|
||||
/* Copy sub-field of a structure from guest context via a guest handle. */
|
||||
#define copy_field_from_guest(ptr, hnd, field) ({ \
|
||||
const typeof(&(ptr)->field) _x = &(hnd).p->field; \
|
||||
const typeof(&(ptr)->field) _y = &(ptr)->field; \
|
||||
typeof(&(ptr)->field) _y = &(ptr)->field; \
|
||||
is_hvm_vcpu(current) ? \
|
||||
copy_from_user_hvm(_y, _x, sizeof(*_x)) : \
|
||||
copy_from_user(_y, _x, sizeof(*_x)); \
|
||||
@@ -78,7 +78,7 @@
|
||||
array_access_ok((hnd).p, (nr), sizeof(*(hnd).p)))
|
||||
|
||||
#define __copy_to_guest_offset(hnd, off, ptr, nr) ({ \
|
||||
const typeof(ptr) _x = (hnd).p; \
|
||||
typeof(ptr) _x = (hnd).p; \
|
||||
const typeof(ptr) _y = (ptr); \
|
||||
is_hvm_vcpu(current) ? \
|
||||
copy_to_user_hvm(_x+(off), _y, sizeof(*_x)*(nr)) : \
|
||||
@@ -87,14 +87,14 @@
|
||||
|
||||
#define __copy_from_guest_offset(ptr, hnd, off, nr) ({ \
|
||||
const typeof(ptr) _x = (hnd).p; \
|
||||
const typeof(ptr) _y = (ptr); \
|
||||
typeof(ptr) _y = (ptr); \
|
||||
is_hvm_vcpu(current) ? \
|
||||
copy_from_user_hvm(_y, _x+(off),sizeof(*_x)*(nr)) : \
|
||||
__copy_from_user(_y, _x+(off), sizeof(*_x)*(nr)); \
|
||||
})
|
||||
|
||||
#define __copy_field_to_guest(hnd, ptr, field) ({ \
|
||||
const typeof(&(ptr)->field) _x = &(hnd).p->field; \
|
||||
typeof(&(ptr)->field) _x = &(hnd).p->field; \
|
||||
const typeof(&(ptr)->field) _y = &(ptr)->field; \
|
||||
is_hvm_vcpu(current) ? \
|
||||
copy_to_user_hvm(_x, _y, sizeof(*_x)) : \
|
||||
@@ -103,9 +103,9 @@
|
||||
|
||||
#define __copy_field_from_guest(ptr, hnd, field) ({ \
|
||||
const typeof(&(ptr)->field) _x = &(hnd).p->field; \
|
||||
const typeof(&(ptr)->field) _y = &(ptr)->field; \
|
||||
typeof(&(ptr)->field) _y = &(ptr)->field; \
|
||||
is_hvm_vcpu(current) ? \
|
||||
copy_from_user_hvm(_x, _y, sizeof(*_x)) : \
|
||||
copy_from_user_hvm(_y, _x, sizeof(*_x)) : \
|
||||
__copy_from_user(_y, _x, sizeof(*_x)); \
|
||||
})
|
||||
|
||||
|
||||