x86: fix build with gcc 7

-Wint-in-bool-context, enabled by default in gcc 7, doesn't like
multiplication in conditional operators. "Hide" them, at the risk of
the next compiler version becoming smarter and recognizing even those.
(The hope is that added smartness then would also better deal with
legitimate cases like the ones here.)

The change could have been done in access_ok(), but I think we better
keep it at the places the compiler is actually unhappy about.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Release-acked-by: Julien Grall <julien.grall@arm.com>
This commit is contained in:
Jan Beulich committed 2017-05-19 10:11:36 +02:00
1 parent bb8597b6d3
commit f32400e90c
2 files changed
+4 -4

No files matched your search

+2 -2
View File
@@ -3318,7 +3318,7 @@ static void emulate_gate_op(struct cpu_user_regs *regs)
return;
}
stkp = (unsigned int *)(unsigned long)((unsigned int)base + esp);
if ( !compat_access_ok(stkp - 4 - nparm, (4 + nparm) * 4) )
if ( !compat_access_ok(stkp - 4 - nparm, 16 + nparm * 4) )
{
do_guest_trap(TRAP_gp_fault, regs);
return;
@@ -3338,7 +3338,7 @@ static void emulate_gate_op(struct cpu_user_regs *regs)
return do_guest_trap(TRAP_gp_fault, regs);
ustkp = (unsigned int *)(unsigned long)
((unsigned int)base + regs->esp + nparm * 4);
if ( !compat_access_ok(ustkp - nparm, nparm * 4) )
if ( !compat_access_ok(ustkp - nparm, 0 + nparm * 4) )
{
do_guest_trap(TRAP_gp_fault, regs);
return;
+2 -2
View File
@@ -42,7 +42,7 @@ extern void *xlat_malloc(unsigned long *xlat_page_current, size_t size);
#define array_access_ok(addr, count, size) \
(likely(((count) ?: 0UL) < (~0UL / (size))) && \
access_ok(addr, (count) * (size)))
access_ok(addr, 0 + (count) * (size)))
#define __compat_addr_ok(d, addr) \
((unsigned long)(addr) < HYPERVISOR_COMPAT_VIRT_START(d))
@@ -55,7 +55,7 @@ extern void *xlat_malloc(unsigned long *xlat_page_current, size_t size);
#define compat_array_access_ok(addr,count,size) \
(likely((count) < (~0U / (size))) && \
compat_access_ok(addr, (count) * (size)))
compat_access_ok(addr, 0 + (count) * (size)))
#define __put_user_size(x,ptr,size,retval,errret) \
do { \
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.