Skip to content

Commit 1624dea

Browse files
aloktiwabebarino
authored andcommitted
clk: nxp: Fix pll0 rate check condition in LPC18xx CGU driver
The conditional check for the PLL0 multiplier 'm' used a logical AND instead of OR, making the range check ineffective. This patch replaces && with || to correctly reject invalid values of 'm' that are either less than or equal to 0 or greater than LPC18XX_PLL0_MSEL_MAX. This ensures proper bounds checking during clk rate setting and rounding. Fixes: b04e0b8 ("clk: add lpc18xx cgu clk driver") Signed-off-by: Alok Tiwari <alok.a.tiwari@oracle.com> [sboyd@kernel.org: 'm' is unsigned so remove < condition] Signed-off-by: Stephen Boyd <sboyd@kernel.org>
1 parent 91ec7ad commit 1624dea

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

drivers/clk/nxp/clk-lpc18xx-cgu.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ static int lpc18xx_pll0_determine_rate(struct clk_hw *hw,
381381
}
382382

383383
m = DIV_ROUND_UP_ULL(req->best_parent_rate, req->rate * 2);
384-
if (m <= 0 && m > LPC18XX_PLL0_MSEL_MAX) {
384+
if (m == 0 || m > LPC18XX_PLL0_MSEL_MAX) {
385385
pr_warn("%s: unable to support rate %lu\n", __func__, req->rate);
386386
return -EINVAL;
387387
}
@@ -404,7 +404,7 @@ static int lpc18xx_pll0_set_rate(struct clk_hw *hw, unsigned long rate,
404404
}
405405

406406
m = DIV_ROUND_UP_ULL(parent_rate, rate * 2);
407-
if (m <= 0 && m > LPC18XX_PLL0_MSEL_MAX) {
407+
if (m == 0 || m > LPC18XX_PLL0_MSEL_MAX) {
408408
pr_warn("%s: unable to support rate %lu\n", __func__, rate);
409409
return -EINVAL;
410410
}

0 commit comments

Comments
 (0)