From: Grant Likely Date: Tue, 7 Oct 2014 10:30:31 +0000 (+0100) Subject: of/selftest: Move hash table off stack to fix large frame size X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=2118f4b8dfc666c3e4a9e262beca79636a0852fe;p=linux-beck.git 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 --- 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); }