diff options
author | Rob Clark <robdclark@gmail.com> | 2017-01-12 17:41:44 -0500 |
---|---|---|
committer | Rob Clark <robdclark@gmail.com> | 2017-01-13 10:23:00 -0500 |
commit | de85d2b35ac74f6be769573d4a8708c823219900 (patch) | |
tree | 5b32e7cb9254da81a1babad707e8ef76d56f4d43 | |
parent | c57a94ffd0105d58ab104fe383148c5eda5aa033 (diff) |
drm/msm: fix potential null ptr issue in non-iommu case
Fixes: 9cb07b099fb ("drm/msm: support multiple address spaces")
Reported-by: Riku Voipio <riku.voipio@linaro.org>
Signed-off-by: Rob Clark <robdclark@gmail.com>
-rw-r--r-- | drivers/gpu/drm/msm/adreno/adreno_gpu.c | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/msm/msm_gem.c | 2 |
2 files changed, 4 insertions, 3 deletions
diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c index 14ff87686a36..686a580c711a 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c | |||
@@ -345,7 +345,6 @@ int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev, | |||
345 | { | 345 | { |
346 | struct adreno_platform_config *config = pdev->dev.platform_data; | 346 | struct adreno_platform_config *config = pdev->dev.platform_data; |
347 | struct msm_gpu *gpu = &adreno_gpu->base; | 347 | struct msm_gpu *gpu = &adreno_gpu->base; |
348 | struct msm_mmu *mmu; | ||
349 | int ret; | 348 | int ret; |
350 | 349 | ||
351 | adreno_gpu->funcs = funcs; | 350 | adreno_gpu->funcs = funcs; |
@@ -385,8 +384,8 @@ int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev, | |||
385 | return ret; | 384 | return ret; |
386 | } | 385 | } |
387 | 386 | ||
388 | mmu = gpu->aspace->mmu; | 387 | if (gpu->aspace && gpu->aspace->mmu) { |
389 | if (mmu) { | 388 | struct msm_mmu *mmu = gpu->aspace->mmu; |
390 | ret = mmu->funcs->attach(mmu, iommu_ports, | 389 | ret = mmu->funcs->attach(mmu, iommu_ports, |
391 | ARRAY_SIZE(iommu_ports)); | 390 | ARRAY_SIZE(iommu_ports)); |
392 | if (ret) | 391 | if (ret) |
diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c index d8bc59c7e261..8098677a3916 100644 --- a/drivers/gpu/drm/msm/msm_gem.c +++ b/drivers/gpu/drm/msm/msm_gem.c | |||
@@ -294,6 +294,8 @@ put_iova(struct drm_gem_object *obj) | |||
294 | WARN_ON(!mutex_is_locked(&dev->struct_mutex)); | 294 | WARN_ON(!mutex_is_locked(&dev->struct_mutex)); |
295 | 295 | ||
296 | for (id = 0; id < ARRAY_SIZE(msm_obj->domain); id++) { | 296 | for (id = 0; id < ARRAY_SIZE(msm_obj->domain); id++) { |
297 | if (!priv->aspace[id]) | ||
298 | continue; | ||
297 | msm_gem_unmap_vma(priv->aspace[id], | 299 | msm_gem_unmap_vma(priv->aspace[id], |
298 | &msm_obj->domain[id], msm_obj->sgt); | 300 | &msm_obj->domain[id], msm_obj->sgt); |
299 | } | 301 | } |