cpufreq: spear: Use of_property_for_each_u32() instead of open coding
PATCH 1/1 cpufreq: spear: Use of_property_for_each_u32() instead of open coding
Use of_property_count_u32_elems() and of_property_for_each_u32() instead of of_find_property() and open coding the property parsing.
This is part of a larger effort to remove callers of of_find_property() and similar functions. of_find_property() leaks the DT struct property and data pointers which is a problem for dynamically allocated nodes which may be freed.
--- drivers/cpufreq/spear-cpufreq.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-)
drivers/cpufreq/spear-cpufreq.c +6 -10
@@ -171,9 +171,8 @@ static struct cpufreq_driver spear_cpufreq_driver = {static int spear_cpufreq_probe (struct platform_device *pdev) {struct device_node *np; -const struct property *prop;struct cpufreq_frequency_table *freq_tbl; -const __be32 *val; +u32 val;int cnt, i, ret; np =of_cpu_device_node_get (0 );
@@ -186,26 +185,23 @@ static int spear_cpufreq_probe(struct platform_device *pdev) &spear_cpufreq.transition_latency)) spear_cpufreq.transition_latency =CPUFREQ_ETERNAL ; - prop =of_find_property (np,"cpufreq_tbl" ,NULL ); -if (!prop || !prop->value) { + cnt =of_property_count_u32_elems (np,"cpufreq_tbl" ); +if (cnt <=0 ) {pr_err ("Invalid cpufreq_tbl\n" ); ret = -ENODEV ; goto out_put_node; } - cnt = prop->length /sizeof (u32); - val = prop->value; - freq_tbl =kcalloc (cnt +1 ,sizeof (*freq_tbl),GFP_KERNEL );if (!freq_tbl) { ret = -ENOMEM ; goto out_put_node; } -for (i =0 ; i < cnt; i++) - freq_tbl[i].frequency =be32_to_cpup (val++); +of_property_for_each_u32 (np,"cpufreq_tbl" , &val) + freq_tbl[i].frequency = val; - freq_tbl[i].frequency =CPUFREQ_TABLE_END ; + freq_tbl[cnt].frequency =CPUFREQ_TABLE_END ; spear_cpufreq.freq_tbl = freq_tbl;
Signature · 1 line
2.43.0
Quoted 8 lines · Rob Herring (Arm)
Use
of_property_count_u32_elems()andof_property_for_each_u32()instead ofof_find_property()and open coding the property parsing.This is part of a larger effort to remove callers of
of_find_property()and similar functions.of_find_property()leaks the DT struct property and data pointers which is a problem for dynamically allocated nodes which may be freed.
Quoted 4 lines
Signed-off-by Rob Herring (Arm) <[email protected]>--- drivers/cpufreq/spear-cpufreq.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-)
Applied. Thanks.
Signature · 1 line
viresh