disp: msm: sde: fix kw issues in sde driver
This change to address use after free and null checks in sde driver. Change-Id: Iade91596748b1b867ae959e61fca0f7072eda8f3 Signed-off-by: Narendra Muppalla <NarendraM@codeaurora.org>
This commit is contained in:
@@ -3505,10 +3505,15 @@ static void _sde_crtc_schedule_idle_notify(struct drm_crtc *crtc,
|
|||||||
struct sde_crtc *sde_crtc = to_sde_crtc(crtc);
|
struct sde_crtc *sde_crtc = to_sde_crtc(crtc);
|
||||||
struct sde_crtc_state *cstate = to_sde_crtc_state(old_state);
|
struct sde_crtc_state *cstate = to_sde_crtc_state(old_state);
|
||||||
struct sde_kms *sde_kms = _sde_crtc_get_kms(crtc);
|
struct sde_kms *sde_kms = _sde_crtc_get_kms(crtc);
|
||||||
struct msm_drm_private *priv = sde_kms->dev->dev_private;
|
struct msm_drm_private *priv;
|
||||||
struct msm_drm_thread *event_thread;
|
struct msm_drm_thread *event_thread;
|
||||||
int idle_time = 0;
|
int idle_time = 0;
|
||||||
|
|
||||||
|
if (!sde_kms || !sde_kms->dev || !sde_kms->dev->dev_private)
|
||||||
|
return;
|
||||||
|
|
||||||
|
priv = sde_kms->dev->dev_private;
|
||||||
|
|
||||||
idle_time = sde_crtc_get_property(cstate, CRTC_PROP_IDLE_TIMEOUT);
|
idle_time = sde_crtc_get_property(cstate, CRTC_PROP_IDLE_TIMEOUT);
|
||||||
|
|
||||||
if (!idle_time ||
|
if (!idle_time ||
|
||||||
|
@@ -2618,7 +2618,7 @@ static void sde_encoder_virt_enable(struct drm_encoder *drm_enc)
|
|||||||
struct drm_display_mode *cur_mode = NULL;
|
struct drm_display_mode *cur_mode = NULL;
|
||||||
struct msm_display_info *disp_info;
|
struct msm_display_info *disp_info;
|
||||||
|
|
||||||
if (!drm_enc) {
|
if (!drm_enc || !drm_enc->crtc) {
|
||||||
SDE_ERROR("invalid encoder\n");
|
SDE_ERROR("invalid encoder\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -2630,7 +2630,7 @@ static void sde_encoder_virt_enable(struct drm_encoder *drm_enc)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (drm_enc->crtc && !sde_enc->crtc)
|
if (!sde_enc->crtc)
|
||||||
sde_enc->crtc = drm_enc->crtc;
|
sde_enc->crtc = drm_enc->crtc;
|
||||||
|
|
||||||
comp_info = &sde_enc->mode_info.comp_info;
|
comp_info = &sde_enc->mode_info.comp_info;
|
||||||
|
@@ -2293,8 +2293,8 @@ void sde_rm_release(struct sde_rm *rm, struct drm_encoder *enc, bool nxt)
|
|||||||
if (!conn) {
|
if (!conn) {
|
||||||
SDE_EVT32(enc->base.id, 0x0, 0xffffffff);
|
SDE_EVT32(enc->base.id, 0x0, 0xffffffff);
|
||||||
_sde_rm_release_rsvp(rm, rsvp, conn);
|
_sde_rm_release_rsvp(rm, rsvp, conn);
|
||||||
SDE_DEBUG("failed to get conn for enc %d nxt %d rsvp[s%de%d]\n",
|
SDE_DEBUG("failed to get conn for enc %d nxt %d\n",
|
||||||
enc->base.id, nxt, rsvp->seq, rsvp->enc_id);
|
enc->base.id, nxt);
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user