summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLloyd Atkinson <latkinso@codeaurora.org>2017-01-09 17:37:18 -0500
committerLloyd Atkinson <latkinso@codeaurora.org>2017-01-20 10:39:37 -0500
commit6ce359fca39ceb6f70c9b1ff40e652934e75435a (patch)
treebe534dcfdf4b36eacb1e2f6d8802300f4d2f558c
parentc58bfaf5bb0d72c12ab429a3ffae82ff62cac8ef (diff)
drm/msm/sde: check for null catalog in sde hw destroy
Fix sde hw deconstruction which can be called twice back to back if hw initialization itself fails. In this case the catalog pointer will already be null, so we must check for it. Change-Id: Idc05efd7dd8c2a27f2c8128654e4c0b06697f39e Signed-off-by: Lloyd Atkinson <latkinso@codeaurora.org>
-rw-r--r--drivers/gpu/drm/msm/sde/sde_kms.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/gpu/drm/msm/sde/sde_kms.c b/drivers/gpu/drm/msm/sde/sde_kms.c
index 48704ef60f6e..6c64d72e8262 100644
--- a/drivers/gpu/drm/msm/sde/sde_kms.c
+++ b/drivers/gpu/drm/msm/sde/sde_kms.c
@@ -842,11 +842,13 @@ static void _sde_kms_hw_destroy(struct sde_kms *sde_kms,
_sde_kms_mmu_destroy(sde_kms);
sde_core_perf_destroy(&sde_kms->perf);
- for (i = 0; i < sde_kms->catalog->vbif_count; i++) {
- u32 vbif_idx = sde_kms->catalog->vbif[i].id;
+ if (sde_kms->catalog) {
+ for (i = 0; i < sde_kms->catalog->vbif_count; i++) {
+ u32 vbif_idx = sde_kms->catalog->vbif[i].id;
- if ((vbif_idx < VBIF_MAX) && sde_kms->hw_vbif[vbif_idx])
- sde_hw_vbif_destroy(sde_kms->hw_vbif[vbif_idx]);
+ if ((vbif_idx < VBIF_MAX) && sde_kms->hw_vbif[vbif_idx])
+ sde_hw_vbif_destroy(sde_kms->hw_vbif[vbif_idx]);
+ }
}
if (sde_kms->rm_init)