clk: multiplier: Prevent the multiplier from under / over flowing
authorMaxime Ripard <maxime.ripard@free-electrons.com>
Mon, 16 May 2016 12:47:02 +0000 (14:47 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 10 May 2020 08:26:18 +0000 (10:26 +0200)
commit433104f880283f881dd139c459533eb538f79ae4
treee4b07dc6412747d374f774fe46729a939f5e2359
parent4879a1ddabda9cbf60aa86534c8c2ff93a092b1e
clk: multiplier: Prevent the multiplier from under / over flowing

commit 25f77a3aa4cb948666bf8e7fd972533ea487c3bd upstream.

In the current multiplier base clock implementation, if the
CLK_SET_RATE_PARENT flag isn't set, the code will not make sure that the
multiplier computed remains within the boundaries of our clock.

This means that if the clock we want to reach is below the parent rate,
or if the multiplier is above the maximum that we can reach, we will end up
with a completely bogus one that the clock cannot achieve.

Fixes: f2e0a53271a4 ("clk: Add a basic multiplier clock")
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Signed-off-by: Michael Turquette <mturquette@baylibre.com>
Link: lkml.kernel.org/r/1463402840-17062-3-git-send-email-maxime.ripard@free-electrons.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/clk/clk-multiplier.c