]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
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)
committerBen Hutchings <ben@decadent.org.uk>
Sun, 20 Nov 2016 01:17:19 +0000 (01:17 +0000)
commit b5b4c264df4d270819676b290cef9a11d04c35f0 upstream.

Be kinder to things that do lots of signal handling (ie. Xorg)

Signed-off-by: Rob Clark <robdclark@gmail.com>
[bwh: Backported to 3.16: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/gpu/drm/msm/msm_gem_submit.c

index cd0554f68316e9fa085edade11e122072d417a2b..3b43eee15c0e0ab5192e85e3e26f60ff6f427377 100644 (file)
@@ -339,12 +339,14 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
        if (args->nr_cmds > MAX_CMDS)
                return -EINVAL;
 
-       mutex_lock(&dev->struct_mutex);
+       ret = mutex_lock_interruptible(&dev->struct_mutex);
+       if (ret)
+               return ret;
 
        submit = submit_create(dev, gpu, args->nr_bos);
        if (!submit) {
                ret = -ENOMEM;
-               goto out;
+               goto out_unlock;
        }
 
        ret = submit_lookup_objects(submit, args, file);
@@ -422,6 +424,7 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
 out:
        if (submit)
                submit_cleanup(submit, !!ret);
+out_unlock:
        mutex_unlock(&dev->struct_mutex);
        return ret;
 }