aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm64/mm/numa.c
diff options
context:
space:
mode:
authorAnshuman Khandual <anshuman.khandual@arm.com>2018-09-22 21:09:56 +0530
committerCatalin Marinas <catalin.marinas@arm.com>2018-10-01 13:49:52 +0100
commit52338088ef0569290b7eae0759c58a3de494e6c0 (patch)
tree1480efe84b6eb94179ad73bc48c396579b93624c /arch/arm64/mm/numa.c
parentarm64/numa: Report correct memblock range for the dummy node (diff)
downloadlinux-dev-52338088ef0569290b7eae0759c58a3de494e6c0.tar.xz
linux-dev-52338088ef0569290b7eae0759c58a3de494e6c0.zip
arm64/numa: Unify common error path in numa_init()
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>
Diffstat (limited to 'arch/arm64/mm/numa.c')
-rw-r--r--arch/arm64/mm/numa.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/arch/arm64/mm/numa.c b/arch/arm64/mm/numa.c
index 54529b4ed513..d7b66fc5e1c5 100644
--- a/arch/arm64/mm/numa.c
+++ b/arch/arm64/mm/numa.c
@@ -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;
}
/**