Preventing division by zero condition by making sure that the initial n and m values are not 0.
Signed-off-by: Heikki Krogerus <[email protected]> --- drivers/clk/clk-fractional-divider.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/clk/clk-fractional-divider.c b/drivers/clk/clk-fractional-divider.c index 82a59d0..dc91da7 100644 --- a/drivers/clk/clk-fractional-divider.c +++ b/drivers/clk/clk-fractional-divider.c @@ -104,6 +104,7 @@ struct clk *clk_register_fractional_divider(struct device *dev, struct clk_fractional_divider *fd; struct clk_init_data init; struct clk *clk; + u32 val; fd = kzalloc(sizeof(*fd), GFP_KERNEL); if (!fd) { @@ -126,6 +127,14 @@ struct clk *clk_register_fractional_divider(struct device *dev, fd->lock = lock; fd->hw.init = &init; + /* Prevent division by zero */ + val = clk_readl(fd->reg); + if (!(val & fd->nmask)) + val |= 1 << fd->nshift; + if (!(val & fd->mmask)) + val |= 1 << fd->mshift; + clk_writel(val, fd->reg); + clk = clk_register(dev, &fd->hw); if (IS_ERR(clk)) kfree(fd); -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

