[RFC PATCH 02/34] msm: clock: Always use an array to iterate over clocks
From: Russell King - ARM Linux <hidden>
Date: 2011-11-02 19:46:21
Also in:
linux-arm-msm, lkml
From: Russell King - ARM Linux <hidden>
Date: 2011-11-02 19:46:21
Also in:
linux-arm-msm, lkml
On Wed, Nov 02, 2011 at 11:35:59AM -0700, David Brown wrote:
If the array of clk_lookups contains aliases for the same struct clk, msm_clock_init() will add the clock to the clocks list twice. This would cause list corruption so let's just remove the clocks list and any associated code and iterate over the array instead.
Hmm...
@@ -158,13 +152,13 @@ void __init msm_clock_init(struct clk_lookup *clock_tbl, unsigned num_clocks) */ static int __init clock_late_init(void) { + unsigned i, count = 0; unsigned long flags; - struct clk *clk; - unsigned count = 0; clock_debug_init(); - mutex_lock(&clocks_mutex); - list_for_each_entry(clk, &clocks, list) { + for (i = 0; i < msm_num_clocks; i++) { + struct clk *clk = msm_clocks[i].clk; + clock_debug_add(clk);
This means you'll end up calling clock_debug_add() twice for the same struct clk - this sounds like a bad idea in itself. It looks like there's no protection within that function against it being called twice with the same struct clk. Are you sure this is safe?