Messages in this thread | | | Subject | Re: [PATCH] of: cache phandle nodes to decrease cost of of_find_node_by_phandle() | From | Chintan Pandya <> | Date | Thu, 1 Feb 2018 12:15:39 +0530 |
| |
On 2/1/2018 1:35 AM, frowand.list@gmail.com wrote: > From: Frank Rowand <frank.rowand@sony.com>
> + > +static void of_populate_phandle_cache(void) > +{ > + unsigned long flags; > + phandle max_phandle; > + u32 nodes = 0; > + struct device_node *np; > + > + if (phandle_cache) > + return; > + > + max_phandle = live_tree_max_phandle(); > + > + raw_spin_lock_irqsave(&devtree_lock, flags); > + > + for_each_of_allnodes(np) > + nodes++; > + > + /* sanity cap for malformed tree */ > + if (max_phandle > nodes) > + max_phandle = nodes; Shouldn't we speak up about this in kernel log ? May be WARN_ON() ?
> + > + phandle_cache = kzalloc((max_phandle + 1) * sizeof(*phandle_cache), > + GFP_KERNEL); kzalloc (might_sleep) in critical context will break.
Anyways, will fix this locally and share test results.
Thanks, Chintan
-- Qualcom India Private Limited, on behalf of Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project
| |