diff options
author | Linux Build Service Account <lnxbuild@quicinc.com> | 2017-06-22 23:40:59 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-06-22 23:40:58 -0700 |
commit | 8b2a2a4d4f37da585489f7faf320c0fdf20babbf (patch) | |
tree | 11d0c25a89b35b74199f7c00ed51edf65b685ff0 /drivers | |
parent | db478ca29dfe7643bd8df94b86d0feec784c2778 (diff) | |
parent | b0f487c506d21033d1f0421003f98dbf3cb79bbc (diff) |
Merge "drm/msm: gracefully handle NULL return from setup_pagetable()"
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/msm/msm_drv.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/msm/msm_gem.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/msm/msm_gem_submit.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/msm/msm_gpu.c | 3 |
4 files changed, 11 insertions, 3 deletions
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index a441f3d15542..f81c42936672 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -602,7 +602,8 @@ static int msm_open(struct drm_device *dev, struct drm_file *file) if (IS_ERR(ctx)) return PTR_ERR(ctx); - INIT_LIST_HEAD(&ctx->counters); + if (ctx) + INIT_LIST_HEAD(&ctx->counters); msm_submitqueue_init(ctx); diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c index 70af0d41f970..d66071672c62 100644 --- a/drivers/gpu/drm/msm/msm_gem.c +++ b/drivers/gpu/drm/msm/msm_gem.c @@ -1046,7 +1046,7 @@ struct drm_gem_object *msm_gem_svm_new(struct drm_device *dev, { struct drm_gem_object *obj; struct msm_file_private *ctx = file->driver_priv; - struct msm_gem_address_space *aspace = ctx->aspace; + struct msm_gem_address_space *aspace; struct msm_gem_object *msm_obj; struct msm_gem_svm_object *msm_svm_obj; struct msm_gem_vma *domain = NULL; @@ -1056,6 +1056,9 @@ struct drm_gem_object *msm_gem_svm_new(struct drm_device *dev, int write; int ret; + if (!ctx) + return ERR_PTR(-ENODEV); + /* if we don't have IOMMU, don't bother pretending we can import: */ if (!iommu_present(&platform_bus_type)) { dev_err_once(dev->dev, "cannot import without IOMMU\n"); @@ -1078,6 +1081,7 @@ struct drm_gem_object *msm_gem_svm_new(struct drm_device *dev, drm_gem_private_object_init(dev, obj, size); msm_obj = to_msm_bo(obj); + aspace = ctx->aspace; domain = obj_add_domain(&msm_obj->base, aspace); if (IS_ERR(domain)) { drm_gem_object_unreference_unlocked(obj); diff --git a/drivers/gpu/drm/msm/msm_gem_submit.c b/drivers/gpu/drm/msm/msm_gem_submit.c index b9ace0d9e69b..7ccc146f3ae1 100644 --- a/drivers/gpu/drm/msm/msm_gem_submit.c +++ b/drivers/gpu/drm/msm/msm_gem_submit.c @@ -430,7 +430,7 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data, return -EINVAL; gpu = priv->gpu; - if (!gpu) + if (!gpu || !ctx) return -ENXIO; queue = msm_submitqueue_get(ctx, args->queueid); diff --git a/drivers/gpu/drm/msm/msm_gpu.c b/drivers/gpu/drm/msm/msm_gpu.c index 16049e830b7a..d896e436251f 100644 --- a/drivers/gpu/drm/msm/msm_gpu.c +++ b/drivers/gpu/drm/msm/msm_gpu.c @@ -669,6 +669,9 @@ int msm_gpu_counter_put(struct msm_gpu *gpu, struct drm_msm_counter *data, { struct msm_context_counter *entry; + if (!gpu || !ctx) + return -ENODEV; + list_for_each_entry(entry, &ctx->counters, node) { if (entry->groupid == data->groupid && entry->counterid == data->counterid) { |