[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] 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 <wei.liu2@xxxxxxxxxx> --- Found by code inspection. There shouldn't be any practical difference in our current setup because the function is hardware domain only. But ISTM the plan is to make this available to DomU in the future so we'd better be careful about buggy / malicious guests. Cc: Jan Beulich <jbeulich@xxxxxxxx> Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Cc: Paul Durrant <paul.durrant@xxxxxxxxxx> Cc: Roger Pau Monné <roger.pau@xxxxxxxxxx> --- 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.11.0 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |