diff options
author | Dave Airlie <airlied@redhat.com> | 2018-04-25 21:09:04 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2018-04-25 21:09:04 -0400 |
commit | 14cdea89459e71e38027aa4fb1099c29f4c53316 (patch) | |
tree | 6a0606e5f281a802e31fb9f6763c1d87f92ad1fa /drivers/gpu/drm/msm/msm_gem.c | |
parent | 8eb8ad52fbc99aa87f1c56db378ee910833ed780 (diff) | |
parent | 789d4c300e10eb2096ee83c3497118e67ccc951e (diff) |
Merge tag 'drm-msm-fixes-2018-04-25' of git://people.freedesktop.org/~robclark/linux into drm-fixes
A few fixes for 4.17.. thanks to Sean for helping pull together some
of the display related fixes while I was off in compute-land.
* tag 'drm-msm-fixes-2018-04-25' of git://people.freedesktop.org/~robclark/linux:
drm/msm: don't deref error pointer in the msm_fbdev_create error path
drm/msm/dsi: use correct enum in dsi_get_cmd_fmt
drm/msm: Fix possible null dereference on failure of get_pages()
drm/msm: Add modifier to mdp_get_format arguments
drm/msm: Mark the crtc->state->event consumed
drm/msm/dsi: implement auto PHY timing calculator for 10nm PHY
drm/msm/dsi: check video mode engine status before waiting
drm/msm/dsi: check return value for video done waits
Diffstat (limited to 'drivers/gpu/drm/msm/msm_gem.c')
-rw-r--r-- | drivers/gpu/drm/msm/msm_gem.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c index 95196479f651..f583bb4222f9 100644 --- a/drivers/gpu/drm/msm/msm_gem.c +++ b/drivers/gpu/drm/msm/msm_gem.c | |||
@@ -132,17 +132,19 @@ static void put_pages(struct drm_gem_object *obj) | |||
132 | struct msm_gem_object *msm_obj = to_msm_bo(obj); | 132 | struct msm_gem_object *msm_obj = to_msm_bo(obj); |
133 | 133 | ||
134 | if (msm_obj->pages) { | 134 | if (msm_obj->pages) { |
135 | /* For non-cached buffers, ensure the new pages are clean | 135 | if (msm_obj->sgt) { |
136 | * because display controller, GPU, etc. are not coherent: | 136 | /* For non-cached buffers, ensure the new |
137 | */ | 137 | * pages are clean because display controller, |
138 | if (msm_obj->flags & (MSM_BO_WC|MSM_BO_UNCACHED)) | 138 | * GPU, etc. are not coherent: |
139 | dma_unmap_sg(obj->dev->dev, msm_obj->sgt->sgl, | 139 | */ |
140 | msm_obj->sgt->nents, DMA_BIDIRECTIONAL); | 140 | if (msm_obj->flags & (MSM_BO_WC|MSM_BO_UNCACHED)) |
141 | dma_unmap_sg(obj->dev->dev, msm_obj->sgt->sgl, | ||
142 | msm_obj->sgt->nents, | ||
143 | DMA_BIDIRECTIONAL); | ||
141 | 144 | ||
142 | if (msm_obj->sgt) | ||
143 | sg_free_table(msm_obj->sgt); | 145 | sg_free_table(msm_obj->sgt); |
144 | 146 | kfree(msm_obj->sgt); | |
145 | kfree(msm_obj->sgt); | 147 | } |
146 | 148 | ||
147 | if (use_pages(obj)) | 149 | if (use_pages(obj)) |
148 | drm_gem_put_pages(obj, msm_obj->pages, true, false); | 150 | drm_gem_put_pages(obj, msm_obj->pages, true, false); |