Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/msm: Fix failure paths in msm_drm_init()

Ensure that we do drm_dev_put() when there is an early return in
msm_drm_init().

Signed-off-by: Akhil P Oommen <quic_akhilpo@quicinc.com>
Patchwork: https://patchwork.freedesktop.org/patch/515606/
Link: https://lore.kernel.org/r/20221221203925.v2.2.I49dfc3654040be61702e491f1aa63d3a5f308852@changeid
Signed-off-by: Rob Clark <robdclark@chromium.org>

authored by

Akhil P Oommen and committed by
Rob Clark
86365003 dbeedbcb

+10 -4
+3
drivers/gpu/drm/msm/disp/msm_disp_snapshot.c
··· 129 129 } 130 130 131 131 priv = drm_dev->dev_private; 132 + if (!priv->kms) 133 + return; 134 + 132 135 kms = priv->kms; 133 136 134 137 if (kms->dump_worker)
+7 -4
drivers/gpu/drm/msm/msm_drv.c
··· 150 150 struct msm_drm_private *priv = dev->dev_private; 151 151 struct msm_kms *kms = priv->kms; 152 152 153 + if (!priv->kms) 154 + return; 155 + 153 156 kms->funcs->irq_uninstall(kms); 154 157 if (kms->irq_requested) 155 158 free_irq(kms->irq, dev); ··· 270 267 component_unbind_all(dev, ddev); 271 268 272 269 ddev->dev_private = NULL; 273 - drm_dev_put(ddev); 274 - 275 270 destroy_workqueue(priv->wq); 276 271 277 272 return 0; ··· 442 441 443 442 ret = msm_init_vram(ddev); 444 443 if (ret) 445 - return ret; 444 + goto err_drm_dev_put; 446 445 447 446 /* Bind all our sub-components: */ 448 447 ret = component_bind_all(dev, ddev); 449 448 if (ret) 450 - return ret; 449 + goto err_drm_dev_put; 451 450 452 451 dma_set_max_seg_size(dev, UINT_MAX); 453 452 ··· 542 541 543 542 err_msm_uninit: 544 543 msm_drm_uninit(dev); 544 + err_drm_dev_put: 545 + drm_dev_put(ddev); 545 546 return ret; 546 547 } 547 548