From: Wei Liu Date: Tue, 27 Mar 2018 11:04:20 +0000 (+0100) Subject: x86/vpci: validate data first in register_vpci_mmcfg_handler X-Git-Tag: archive/raspbian/4.11.1-1+rpi1~1^2~66^2~312 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=0e8e4a4437402bb53aa41081912ef14021ebb6ea;p=xen.git x86/vpci: validate data first in register_vpci_mmcfg_handler Avoid the need to deallocate memory when the data is invalid. It has the benefit to not fragment memory in Xen. Signed-off-by: Wei Liu Reviewed-by: Roger Pau Monné Acked-by: Jan Beulich --- diff --git a/xen/arch/x86/hvm/io.c b/xen/arch/x86/hvm/io.c index 556810c126..9af5e3fee6 100644 --- a/xen/arch/x86/hvm/io.c +++ b/xen/arch/x86/hvm/io.c @@ -511,18 +511,16 @@ int register_vpci_mmcfg_handler(struct domain *d, paddr_t addr, unsigned int start_bus, unsigned int end_bus, unsigned int seg) { - struct hvm_mmcfg *mmcfg, *new = xmalloc(struct hvm_mmcfg); + struct hvm_mmcfg *mmcfg, *new; ASSERT(is_hardware_domain(d)); - if ( !new ) - return -ENOMEM; - if ( start_bus > end_bus ) - { - xfree(new); return -EINVAL; - } + + new = xmalloc(struct hvm_mmcfg); + if ( !new ) + return -ENOMEM; new->addr = addr + (start_bus << 20); new->start_bus = start_bus;