From: Rob Clark Date: Tue, 17 May 2016 19:43:35 +0000 (-0400) Subject: drm/msm: use mutex_lock_interruptible for submit ioctl X-Git-Tag: v3.16.39~121 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cc5fdd0cc3ed004df9f15f5ce3c9f2432fc037c5;p=thirdparty%2Fkernel%2Fstable.git drm/msm: use mutex_lock_interruptible for submit ioctl commit b5b4c264df4d270819676b290cef9a11d04c35f0 upstream. Be kinder to things that do lots of signal handling (ie. Xorg) Signed-off-by: Rob Clark [bwh: Backported to 3.16: adjust context] Signed-off-by: Ben Hutchings --- diff --git a/drivers/gpu/drm/msm/msm_gem_submit.c b/drivers/gpu/drm/msm/msm_gem_submit.c index cd0554f68316e..3b43eee15c0e0 100644 --- a/drivers/gpu/drm/msm/msm_gem_submit.c +++ b/drivers/gpu/drm/msm/msm_gem_submit.c @@ -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; }