[PATCH] x86: srat: simplify memory affinity init error handling
The acpi_numa_memory_affinity_init() function can fail in several scenarios, use a single point of error return. Signed-off-by: Davidlohr Bueso --- arch/x86/mm/srat.c | 29 +++-- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/arch/x86/mm/srat.c b/arch/x86/mm/srat.c index 4ddf497..1100423 100644 --- a/arch/x86/mm/srat.c +++ b/arch/x86/mm/srat.c @@ -149,39 +149,40 @@ acpi_numa_memory_affinity_init(struct acpi_srat_mem_affinity *ma) int node, pxm; if (srat_disabled()) - return -1; - if (ma->header.length != sizeof(struct acpi_srat_mem_affinity)) { - bad_srat(); - return -1; - } + goto err; + if (ma->header.length != sizeof(struct acpi_srat_mem_affinity)) + goto badsrat; if ((ma->flags & ACPI_SRAT_MEM_ENABLED) == 0) - return -1; - + goto err; if ((ma->flags & ACPI_SRAT_MEM_HOT_PLUGGABLE) && !save_add_info()) - return -1; + goto err; + start = ma->base_address; end = start + ma->length; pxm = ma->proximity_domain; if (acpi_srat_revision <= 1) pxm &= 0xff; + node = setup_node(pxm); if (node < 0) { printk(KERN_ERR "SRAT: Too many proximity domains.\n"); - bad_srat(); - return -1; + goto badsrat; } - if (numa_add_memblk(node, start, end) < 0) { - bad_srat(); - return -1; - } + if (numa_add_memblk(node, start, end) < 0) + goto badsrat; node_set(node, numa_nodes_parsed); printk(KERN_INFO "SRAT: Node %u PXM %u [mem %#010Lx-%#010Lx]\n", node, pxm, (unsigned long long) start, (unsigned long long) end - 1); + return 0; +badsrat: + bad_srat(); +err: + return -1; } void __init acpi_numa_arch_fixup(void) {} -- 1.7.11.7 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] x86: srat: simplify memory affinity init error handling
The acpi_numa_memory_affinity_init() function can fail in several scenarios, use a single point of error return. Signed-off-by: Davidlohr Bueso davidlohr.bu...@hp.com --- arch/x86/mm/srat.c | 29 +++-- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/arch/x86/mm/srat.c b/arch/x86/mm/srat.c index 4ddf497..1100423 100644 --- a/arch/x86/mm/srat.c +++ b/arch/x86/mm/srat.c @@ -149,39 +149,40 @@ acpi_numa_memory_affinity_init(struct acpi_srat_mem_affinity *ma) int node, pxm; if (srat_disabled()) - return -1; - if (ma-header.length != sizeof(struct acpi_srat_mem_affinity)) { - bad_srat(); - return -1; - } + goto err; + if (ma-header.length != sizeof(struct acpi_srat_mem_affinity)) + goto badsrat; if ((ma-flags ACPI_SRAT_MEM_ENABLED) == 0) - return -1; - + goto err; if ((ma-flags ACPI_SRAT_MEM_HOT_PLUGGABLE) !save_add_info()) - return -1; + goto err; + start = ma-base_address; end = start + ma-length; pxm = ma-proximity_domain; if (acpi_srat_revision = 1) pxm = 0xff; + node = setup_node(pxm); if (node 0) { printk(KERN_ERR SRAT: Too many proximity domains.\n); - bad_srat(); - return -1; + goto badsrat; } - if (numa_add_memblk(node, start, end) 0) { - bad_srat(); - return -1; - } + if (numa_add_memblk(node, start, end) 0) + goto badsrat; node_set(node, numa_nodes_parsed); printk(KERN_INFO SRAT: Node %u PXM %u [mem %#010Lx-%#010Lx]\n, node, pxm, (unsigned long long) start, (unsigned long long) end - 1); + return 0; +badsrat: + bad_srat(); +err: + return -1; } void __init acpi_numa_arch_fixup(void) {} -- 1.7.11.7 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/