FAILED: patch "[PATCH] drm/i915: Fix possible int overflow in" failed to apply to 5.10-stable tree
[email protected]
maintainerThe patch below does not apply to the 5.10-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.10.y
git checkout FETCH_HEAD
git cherry-pick -x 5b511572660190db1dc8ba412efd0be0d3781ab6
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2024080725-lemon-stopped-a201@gregkh' --subject-prefix 'PATCH 5.10.y' HEAD^..
Possible dependencies:
5b5115726601 ("drm/i915: Fix possible int overflow in skl_ddi_calculate_wrpll()") 4d6e86fbecbb ("drm/i915: Introduce some local PLL state variables") 25591b66d0a4 ("drm/i915: s/dev_priv/i915/ in the shared_dpll code") 51d3e6292719 ("drm/i915: Introduce for_each_shared_dpll()")99e5a010e815 ("drm/i915: Decouple I915_NUM_PLLS from PLL IDs")027c57017795 ("drm/i915: Stop requiring PLL index == PLL ID")461f35f01446 ("Merge tag 'drm-next-2023-08-30' of git://anongit.freedesktop.org/drm/drm")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 5b511572660190db1dc8ba412efd0be0d3781ab6 Mon Sep 17 00:00:00 2001
From: Nikita Zhandarovich <[email protected]>
Date: Mon, 29 Jul 2024 10:40:35 -0700
Subject: [PATCH] drm/i915: Fix possible int overflow in
skl_ddi_calculate_wrpll()
On the off chance that clock value ends up being too high (by means of skl_ddi_calculate_wrpll() having been called with big enough value of crtc_state->port_clock * 1000), one possible consequence may be that the result will not be able to fit into signed int.
Fix this issue by moving conversion of clock parameter from kHz to Hz into the body of skl_ddi_calculate_wrpll(), as well as casting the same parameter to u64 type while calculating the value for AFE clock. This both mitigates the overflow problem and avoids possible erroneous integer promotion mishaps.
Found by Linux Verification Center (linuxtesting.org) with static analysis tool SVACE.
drivers/gpu/drm/i915/display/intel_dpll_mgr.c +3 -3
@@ -1658,7 +1658,7 @@ static void skl_wrpll_params_populate(struct skl_wrpll_params *params, }static int -skl_ddi_calculate_wrpll (int clock/* in Hz */ , +skl_ddi_calculate_wrpll (int clock,int ref_clock,struct skl_wrpll_params *wrpll_params) {
@@ -1683,7 +1683,7 @@ skl_ddi_calculate_wrpll(int clock /* in Hz */, };unsigned int dco, d, i;unsigned int p0, p1, p2; -u64 afe_clock = clock *5 ;/* AFE Clock is 5x Pixel clock */ +u64 afe_clock = (u64 )clock *1000 *5 ;/* AFE Clock is 5x Pixel clock, in Hz */ for (d =0 ; d <ARRAY_SIZE (dividers); d++) {for (dco =0 ; dco <ARRAY_SIZE (dco_central_freq); dco++) {
@@ -1808,7 +1808,7 @@ static int skl_ddi_hdmi_pll_dividers(struct intel_crtc_state *crtc_state)struct skl_wrpll_params wrpll_params = {};int ret; - ret =skl_ddi_calculate_wrpll (crtc_state->port_clock *1000 , + ret =skl_ddi_calculate_wrpll (crtc_state->port_clock, i915->display.dpll.ref_clks.nssc, &wrpll_params);if (ret)return ret;