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 <quic_jsampath@quicinc.com>
(cherry picked from commit 393118f87846d64a10c1d5a32161bcbe012c0667)
(cherry picked from commit 17513cad23c67a11431fdfd77a59d5e207352dbc)
This commit is contained in:
Jayasri Sampath Kumaran 2024-08-28 15:46:09 -04:00 • committed by Nageshwar Reddy Goli
commit b19d4a3a8e

View file

@ -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);
}