mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
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 <jbeulich@suse.com> Tested-by: Andrew Cooper <andrew.cooper3@citrix.com> Acked-by: Keir Fraser <keir@xen.org>
This commit is contained in:
1 parent
ebc168f238
commit
407a3c00ff
1 file changed
+7
-5
@@ -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;
|
||||
|
||||