From 0e8e4a4437402bb53aa41081912ef14021ebb6ea Mon Sep 17 00:00:00 2001 From: Wei Liu Date: Tue, 27 Mar 2018 12:04:20 +0100 Subject: [PATCH] x86/vpci: validate data first in register_vpci_mmcfg_handler MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- xen/arch/x86/hvm/io.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) 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; -- 2.39.5