]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
arm64/numa: Unify common error path in numa_init()
authorAnshuman Khandual <anshuman.khandual@arm.com>
Sat, 22 Sep 2018 15:39:56 +0000 (21:09 +0530)
committerCatalin Marinas <catalin.marinas@arm.com>
Mon, 1 Oct 2018 12:49:52 +0000 (13:49 +0100)
At present numa_free_distance() is being called before numa_distance is
even initialized with numa_alloc_distance() which is really pointless.
Instead lets call numa_free_distance() on the common error path inside
numa_init() after numa_alloc_distance() has been successful.

Fixes: 1a2db30034 ("arm64, numa: Add NUMA support for arm64 platforms")
Acked-by: Punit Agrawal <punit.agrawal@arm.com>
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/mm/numa.c

index 54529b4ed513022a7a69c77b6d65165934278070..d7b66fc5e1c579d047ba262a2607a642e6c2e9e6 100644 (file)
@@ -391,7 +391,6 @@ static int __init numa_init(int (*init_func)(void))
        nodes_clear(numa_nodes_parsed);
        nodes_clear(node_possible_map);
        nodes_clear(node_online_map);
-       numa_free_distance();
 
        ret = numa_alloc_distance();
        if (ret < 0)
@@ -399,20 +398,24 @@ static int __init numa_init(int (*init_func)(void))
 
        ret = init_func();
        if (ret < 0)
-               return ret;
+               goto out_free_distance;
 
        if (nodes_empty(numa_nodes_parsed)) {
                pr_info("No NUMA configuration found\n");
-               return -EINVAL;
+               ret = -EINVAL;
+               goto out_free_distance;
        }
 
        ret = numa_register_nodes();
        if (ret < 0)
-               return ret;
+               goto out_free_distance;
 
        setup_node_to_cpumask_map();
 
        return 0;
+out_free_distance:
+       numa_free_distance();
+       return ret;
 }
 
 /**