drm/msm: use mutex_lock_interruptible for submit ioctl
authorRob Clark <robdclark@gmail.com>
Tue, 17 May 2016 19:43:35 +0000 (15:43 -0400)
committerRob Clark <robdclark@gmail.com>
Sat, 16 Jul 2016 14:09:04 +0000 (10:09 -0400)
Be kinder to things that do lots of signal handling (ie. Xorg)

Signed-off-by: Rob Clark <robdclark@gmail.com>
drivers/gpu/drm/msm/msm_gem_submit.c

index eb4bb8b2f3a5cae6799e1ef142af1be3da568e5d..ea5f709e2e2780e41356c5233e5e2288e1706755 100644 (file)
@@ -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;
 }