On 2/15/2018 6:22 AM, [email protected] wrote:

+static void of_populate_phandle_cache(void)
+{
+       unsigned long flags;
+       u32 cache_entries;
+       struct device_node *np;
+       u32 phandles = 0;
+
+       raw_spin_lock_irqsave(&devtree_lock, flags);
+
+       kfree(phandle_cache);
+       phandle_cache = NULL;
+
+       for_each_of_allnodes(np)
+               if (np->phandle && np->phandle != OF_PHANDLE_ILLEGAL)
+                       phandles++;
+
+       cache_entries = roundup_pow_of_two(phandles);
+       phandle_cache_mask = cache_entries - 1;
+
+       phandle_cache = kcalloc(cache_entries, sizeof(*phandle_cache),
+                               GFP_ATOMIC);
+

NULL check of phandle_cache would be good to have.

+       for_each_of_allnodes(np)
+               if (np->phandle && np->phandle != OF_PHANDLE_ILLEGAL)
+                       phandle_cache[np->phandle & phandle_cache_mask] = np;
+
+       raw_spin_unlock_irqrestore(&devtree_lock, flags);
+}


Chintan
--
Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center,
Inc. is a member of the Code Aurora Forum, a Linux Foundation
Collaborative Project

Reply via email to