From: Jouni Högander Date: Thu, 7 Aug 2025 04:26:35 +0000 (+0300) Subject: drm/i915/dsi: Fix overflow issue in pclk parsing X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=5fe8d1dba706ee5234acef29c4410ade89170193;p=users%2Fwilly%2Fxarray.git drm/i915/dsi: Fix overflow issue in pclk parsing Parsed divider p will overflow and is considered being valid in case pll_ctl == 0. Fix this by checking divider p before decreasing it. Also small improvement is made by using fls() instead of custom loop. v2: use fls() and check parsed divider Signed-off-by: Jouni Högander Reviewed-by: Jani Nikula Link: https://lore.kernel.org/r/20250807042635.2491537-1-jouni.hogander@intel.com --- diff --git a/drivers/gpu/drm/i915/display/vlv_dsi_pll.c b/drivers/gpu/drm/i915/display/vlv_dsi_pll.c index b52463fdec47..83afe1315e96 100644 --- a/drivers/gpu/drm/i915/display/vlv_dsi_pll.c +++ b/drivers/gpu/drm/i915/display/vlv_dsi_pll.c @@ -142,11 +142,9 @@ static int vlv_dsi_pclk(struct intel_encoder *encoder, pll_div &= DSI_PLL_M1_DIV_MASK; pll_div = pll_div >> DSI_PLL_M1_DIV_SHIFT; - while (pll_ctl) { - pll_ctl = pll_ctl >> 1; - p++; - } - p--; + p = fls(pll_ctl); + if (p) + p--; if (!p) { drm_err(display->drm, "wrong P1 divisor\n");