|
@@ -372,11 +372,15 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
|
|
|
if (args->nr_cmds > MAX_CMDS)
|
|
|
return -EINVAL;
|
|
|
|
|
|
- submit = submit_create(dev, gpu, args->nr_bos);
|
|
|
- if (!submit)
|
|
|
- return -ENOMEM;
|
|
|
+ ret = mutex_lock_interruptible(&dev->struct_mutex);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
|
|
|
- mutex_lock(&dev->struct_mutex);
|
|
|
+ submit = submit_create(dev, gpu, args->nr_bos);
|
|
|
+ if (!submit) {
|
|
|
+ ret = -ENOMEM;
|
|
|
+ goto out_unlock;
|
|
|
+ }
|
|
|
|
|
|
ret = submit_lookup_objects(submit, args, file);
|
|
|
if (ret)
|
|
@@ -462,6 +466,7 @@ out:
|
|
|
submit_cleanup(submit);
|
|
|
if (ret)
|
|
|
msm_gem_submit_free(submit);
|
|
|
+out_unlock:
|
|
|
mutex_unlock(&dev->struct_mutex);
|
|
|
return ret;
|
|
|
}
|