summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@quicinc.com>2017-06-22 23:40:59 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2017-06-22 23:40:58 -0700
commit8b2a2a4d4f37da585489f7faf320c0fdf20babbf (patch)
tree11d0c25a89b35b74199f7c00ed51edf65b685ff0 /drivers
parentdb478ca29dfe7643bd8df94b86d0feec784c2778 (diff)
parentb0f487c506d21033d1f0421003f98dbf3cb79bbc (diff)
Merge "drm/msm: gracefully handle NULL return from setup_pagetable()"
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/msm/msm_drv.c3
-rw-r--r--drivers/gpu/drm/msm/msm_gem.c6
-rw-r--r--drivers/gpu/drm/msm/msm_gem_submit.c2
-rw-r--r--drivers/gpu/drm/msm/msm_gpu.c3
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) {