diff options
author | Grant Likely <grant.likely@linaro.org> | 2014-10-07 12:30:31 +0200 |
---|---|---|
committer | Grant Likely <grant.likely@linaro.org> | 2014-10-07 12:30:31 +0200 |
commit | 2118f4b8dfc666c3e4a9e262beca79636a0852fe (patch) | |
tree | b0dabd31a3f41cfff12b8d8304b76be8a93019f2 | |
parent | Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/robh... (diff) | |
download | linux-2118f4b8dfc666c3e4a9e262beca79636a0852fe.tar.xz linux-2118f4b8dfc666c3e4a9e262beca79636a0852fe.zip |
of/selftest: Move hash table off stack to fix large frame size
The new testcase that checks phandle consistency was using a hash table
on the stack which made the frame size much large than it should be. Fix
the problem by moving the hash table into the file scope.
Signed-off-by: Grant Likely <grant.likely@linaro.org>
-rw-r--r-- | drivers/of/selftest.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/of/selftest.c b/drivers/of/selftest.c index 4fed34bff5cf..78001270a598 100644 --- a/drivers/of/selftest.c +++ b/drivers/of/selftest.c @@ -198,20 +198,19 @@ struct node_hash { struct device_node *np; }; +static DEFINE_HASHTABLE(phandle_ht, 8); static void __init of_selftest_check_phandles(void) { struct device_node *np; struct node_hash *nh; struct hlist_node *tmp; int i, dup_count = 0, phandle_count = 0; - DECLARE_HASHTABLE(ht, 8); - hash_init(ht); for_each_of_allnodes(np) { if (!np->phandle) continue; - hash_for_each_possible(ht, nh, node, np->phandle) { + hash_for_each_possible(phandle_ht, nh, node, np->phandle) { if (nh->np->phandle == np->phandle) { pr_info("Duplicate phandle! %i used by %s and %s\n", np->phandle, nh->np->full_name, np->full_name); @@ -225,14 +224,14 @@ static void __init of_selftest_check_phandles(void) return; nh->np = np; - hash_add(ht, &nh->node, np->phandle); + hash_add(phandle_ht, &nh->node, np->phandle); phandle_count++; } selftest(dup_count == 0, "Found %i duplicates in %i phandles\n", dup_count, phandle_count); /* Clean up */ - hash_for_each_safe(ht, i, tmp, nh, node) { + hash_for_each_safe(phandle_ht, i, tmp, nh, node) { hash_del(&nh->node); kfree(nh); } |