From b19d4a3a8e2d7f34a57aefb386ed56327b608def Mon Sep 17 00:00:00 2001 From: Jayasri Sampath Kumaran Date: Wed, 28 Aug 2024 15:46:09 -0400 Subject: [PATCH] disp: msm: sde: fix kms NULL pointer access in encoder IRQ control A possible kms NULL pointer access is found during CPU vote for IRQ when kms isn't NULL checked before accessing structure members. So, perform kms NULL check before accessing members. Change-Id: I137759ea0723be8580e9166c983d1ba38f4eb281 Signed-off-by: Jayasri Sampath Kumaran (cherry picked from commit 393118f87846d64a10c1d5a32161bcbe012c0667) (cherry picked from commit 17513cad23c67a11431fdfd77a59d5e207352dbc) --- msm/sde/sde_encoder.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/msm/sde/sde_encoder.c b/msm/sde/sde_encoder.c index d2c54c99ab14..5a4006468a59 100644 --- a/msm/sde/sde_encoder.c +++ b/msm/sde/sde_encoder.c @@ -1434,6 +1434,7 @@ static int _sde_encoder_update_rsc_client( void sde_encoder_irq_control(struct drm_encoder *drm_enc, bool enable) { struct sde_encoder_virt *sde_enc; + struct sde_kms *sde_kms = NULL; int i; if (!drm_enc) { @@ -1441,6 +1442,12 @@ void sde_encoder_irq_control(struct drm_encoder *drm_enc, bool enable) return; } + sde_kms = sde_encoder_get_kms(drm_enc); + if (!sde_kms) { + SDE_ERROR("invalid kms\n"); + return; + } + sde_enc = to_sde_encoder_virt(drm_enc); SDE_DEBUG_ENC(sde_enc, "enable:%d\n", enable); @@ -1450,7 +1457,7 @@ void sde_encoder_irq_control(struct drm_encoder *drm_enc, bool enable) if (phys && phys->ops.irq_control) phys->ops.irq_control(phys, enable); } - sde_kms_cpu_vote_for_irq(sde_encoder_get_kms(drm_enc), enable); + sde_kms_cpu_vote_for_irq(sde_kms, enable); }