There is a possibility that intel_encoder_to_tc() functions
returns negative i.e. TC_PORT_NONE (-1) value which may cause
tc_port_power_domain() function to overflow. To fix this,
let's add additional check that returns invalid power domain
i.e. POWER_DOMAIN_INVALID in case tc port equals TC_PORT_NONE.

Signed-off-by: Mika Kahola <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_tc.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_tc.c 
b/drivers/gpu/drm/i915/display/intel_tc.c
index 583fed5a386d..23745fc99d35 100644
--- a/drivers/gpu/drm/i915/display/intel_tc.c
+++ b/drivers/gpu/drm/i915/display/intel_tc.c
@@ -249,6 +249,9 @@ tc_port_power_domain(struct intel_tc_port *tc)
 {
        enum tc_port tc_port = intel_encoder_to_tc(&tc->dig_port->base);
 
+       if (tc_port == TC_PORT_NONE)
+               return POWER_DOMAIN_INVALID;
+
        return POWER_DOMAIN_PORT_DDI_LANES_TC1 + tc_port - TC_PORT_1;
 }
 
-- 
2.34.1

Reply via email to