From 407a3c00ffe9b283b2bd7e3ae6aa86a54d51ed92 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Mon, 20 Jan 2014 09:50:20 +0100 Subject: [PATCH] compat/memory: fix build with old gcc struct xen_add_to_physmap_batch's size field being uint16_t causes old compiler versions to warn about the pointless range check done inside compat_handle_okay(). Signed-off-by: Jan Beulich Tested-by: Andrew Cooper Acked-by: Keir Fraser --- xen/common/compat/memory.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/xen/common/compat/memory.c b/xen/common/compat/memory.c index 4fae02afe9..daa2e04d8a 100644 --- a/xen/common/compat/memory.c +++ b/xen/common/compat/memory.c @@ -206,18 +206,20 @@ int compat_memory_op(unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) compat) { unsigned int limit = (COMPAT_ARG_XLAT_SIZE - sizeof(*nat.atpb)) / (sizeof(nat.atpb->idxs.p) + sizeof(nat.atpb->gpfns.p)); + /* Use an intermediate variable to suppress warnings on old gcc: */ + unsigned int size = cmp.atpb.size; xen_ulong_t *idxs = (void *)(nat.atpb + 1); xen_pfn_t *gpfns = (void *)(idxs + limit); if ( copy_from_guest(&cmp.atpb, compat, 1) || - !compat_handle_okay(cmp.atpb.idxs, cmp.atpb.size) || - !compat_handle_okay(cmp.atpb.gpfns, cmp.atpb.size) || - !compat_handle_okay(cmp.atpb.errs, cmp.atpb.size) ) + !compat_handle_okay(cmp.atpb.idxs, size) || + !compat_handle_okay(cmp.atpb.gpfns, size) || + !compat_handle_okay(cmp.atpb.errs, size) ) return -EFAULT; end_extent = start_extent + limit; - if ( end_extent > cmp.atpb.size ) - end_extent = cmp.atpb.size; + if ( end_extent > size ) + end_extent = size; idxs -= start_extent; gpfns -= start_extent; -- 2.30.2