From: Jan Beulich Date: Thu, 21 Jan 2016 15:09:58 +0000 (+0100) Subject: x86/PV: relax LDT address check X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~1904 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=f289b9a4a7b2337288253671a12b9519fd275b8d;p=xen.git x86/PV: relax LDT address check There's no point placing restrictions on its address when the LDT size is zero. Also convert a local variable to a slightly more efficient type. Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper --- diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index b5d0ebc380..f5b89dee61 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -3348,8 +3348,8 @@ long do_mmuext_op( case MMUEXT_SET_LDT: { - unsigned long ptr = op.arg1.linear_addr; - unsigned long ents = op.arg2.nr_ents; + unsigned int ents = op.arg2.nr_ents; + unsigned long ptr = ents ? op.arg1.linear_addr : 0; if ( unlikely(d != pg_owner) ) rc = -EPERM; @@ -3361,7 +3361,7 @@ long do_mmuext_op( else if ( ((ptr & (PAGE_SIZE - 1)) != 0) || !__addr_ok(ptr) || (ents > 8192) ) { - MEM_LOG("Bad args to SET_LDT: ptr=%lx, ents=%lx", ptr, ents); + MEM_LOG("Bad args to SET_LDT: ptr=%lx, ents=%x", ptr, ents); rc = -EINVAL; } else if ( (curr->arch.pv_vcpu.ldt_ents != ents) ||