summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 a3bdc30b9620..d1d618d3ff92 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);
file->driver_priv = ctx;
diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c
index 6bb29c62378d..0b3de2cb4179 100644
--- a/drivers/gpu/drm/msm/msm_gem.c
+++ b/drivers/gpu/drm/msm/msm_gem.c
@@ -1038,7 +1038,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;
@@ -1048,6 +1048,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");
@@ -1070,6 +1073,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 c861bfd77537..c9802fea6878 100644
--- a/drivers/gpu/drm/msm/msm_gem_submit.c
+++ b/drivers/gpu/drm/msm/msm_gem_submit.c
@@ -409,7 +409,7 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
return -EINVAL;
gpu = priv->gpu;
- if (!gpu)
+ if (!gpu || !ctx)
return -ENXIO;
mutex_lock(&dev->struct_mutex);
diff --git a/drivers/gpu/drm/msm/msm_gpu.c b/drivers/gpu/drm/msm/msm_gpu.c
index 81bab9cc22af..4fd76e9e11f9 100644
--- a/drivers/gpu/drm/msm/msm_gpu.c
+++ b/drivers/gpu/drm/msm/msm_gpu.c
@@ -652,6 +652,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) {