From: Jimi Xenidis Date: Thu, 13 Jul 2006 15:26:51 +0000 (-0400) Subject: [powerpc] Handle 2 forms of NULL guest handle X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~15791 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=1a0ef99488254f9c57da4fdbbc198503c27f5437;p=xen.git [powerpc] Handle 2 forms of NULL guest handle Signed-off-by: Jimi Xenidis --- diff --git a/xen/arch/powerpc/usercopy.c b/xen/arch/powerpc/usercopy.c index 542e70d8b8..77ec80c66c 100644 --- a/xen/arch/powerpc/usercopy.c +++ b/xen/arch/powerpc/usercopy.c @@ -231,3 +231,12 @@ void xencomm_add_offset(void *handle, unsigned int bytes) bytes -= chunk_skip; } } + +int xencomm_handle_is_null(void *ptr) +{ + struct xencomm_desc *desc; + + desc = (struct xencomm_desc *)paddr_to_maddr((unsigned long)ptr); + + return (desc->address[0] == XENCOMM_INVALID); +} diff --git a/xen/include/asm-powerpc/guest_access.h b/xen/include/asm-powerpc/guest_access.h index 7b77642318..51f6d501c2 100644 --- a/xen/include/asm-powerpc/guest_access.h +++ b/xen/include/asm-powerpc/guest_access.h @@ -26,9 +26,12 @@ extern unsigned long xencomm_copy_to_guest(void *to, const void *from, extern unsigned long xencomm_copy_from_guest(void *to, const void *from, unsigned int len, unsigned int skip); extern void xencomm_add_offset(void *handle, unsigned int bytes); +extern int xencomm_handle_is_null(void *ptr); + /* Is the guest handle a NULL reference? */ -#define guest_handle_is_null(hnd) ((hnd).p == NULL) +#define guest_handle_is_null(hnd) \ + ((hnd).p == NULL || xencomm_handle_is_null((hnd).p)) /* Offset the given guest handle into the array it refers to. */ #define guest_handle_add_offset(hnd, nr) ({ \