Add validity checks for the dmc ids computed from pipe parameters in
intel_dmc_enable_pipe() and intel_dmc_disable_pipe(). It's slightly
difficult for humans and static analyzers alike to ensure the resulting
dmc ids are within bounds. Just check them and reject invalid ones.

Signed-off-by: Jani Nikula <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_dmc.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dmc.c 
b/drivers/gpu/drm/i915/display/intel_dmc.c
index ab0ad8e3e620..3b8e8193d042 100644
--- a/drivers/gpu/drm/i915/display/intel_dmc.c
+++ b/drivers/gpu/drm/i915/display/intel_dmc.c
@@ -415,7 +415,9 @@ static void pipedmc_clock_gating_wa(struct drm_i915_private 
*i915, bool enable)
 
 void intel_dmc_enable_pipe(struct drm_i915_private *i915, enum pipe pipe)
 {
-       if (!has_dmc_id_fw(i915, PIPE_TO_DMC_ID(pipe)))
+       enum intel_dmc_id dmc_id = PIPE_TO_DMC_ID(pipe);
+
+       if (!is_valid_dmc_id(dmc_id) || !has_dmc_id_fw(i915, dmc_id))
                return;
 
        if (DISPLAY_VER(i915) >= 14)
@@ -426,7 +428,9 @@ void intel_dmc_enable_pipe(struct drm_i915_private *i915, 
enum pipe pipe)
 
 void intel_dmc_disable_pipe(struct drm_i915_private *i915, enum pipe pipe)
 {
-       if (!has_dmc_id_fw(i915, PIPE_TO_DMC_ID(pipe)))
+       enum intel_dmc_id dmc_id = PIPE_TO_DMC_ID(pipe);
+
+       if (!is_valid_dmc_id(dmc_id) || !has_dmc_id_fw(i915, dmc_id))
                return;
 
        if (DISPLAY_VER(i915) >= 14)
-- 
2.34.1

Reply via email to