clk: prevent erronous parsing of children during rate change
authorTero Kristo <t-kristo@ti.com>
Thu, 21 Aug 2014 13:47:45 +0000 (16:47 +0300)
committerMike Turquette <mturquette@linaro.org>
Wed, 3 Sep 2014 19:09:14 +0000 (12:09 -0700)
commit067bb1741c27c8d3b74ac98c0b8fc12b31e67005
tree2ac73ed146def75686d3d658b5c748831491e7b9
parentf4ee3c8446d55ef426965abccbbc195e0f157e73
clk: prevent erronous parsing of children during rate change

In some cases, clocks can switch their parent with clk_set_rate, for
example clk_mux can do this in some cases. Current implementation of
clk_change_rate uses un-safe list iteration on the clock children, which
will cause wrong clocks to be parsed in case any of the clock children
change their parents during the change rate operation. Fixed by using
the safe list iterator instead.

The problem was detected due to some divide by zero errors generated
by clock init on dra7-evm board, see discussion under
http://article.gmane.org/gmane.linux.ports.arm.kernel/349180 for details.

Fixes: 71472c0c06cf ("clk: add support for clock reparent on set_rate")
Signed-off-by: Tero Kristo <t-kristo@ti.com>
Reported-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Mike Turquette <mturquette@linaro.org>
drivers/clk/clk.c