diff options
author | Rob Clark <robdclark@gmail.com> | 2016-05-17 15:43:35 -0400 |
---|---|---|
committer | Rob Clark <robdclark@gmail.com> | 2016-07-16 10:09:04 -0400 |
commit | b5b4c264df4d270819676b290cef9a11d04c35f0 (patch) | |
tree | 1a5f538c17b7b0029d8bf072c9f87fa7ffbf1a2e /drivers/gpu/drm/msm | |
parent | b137bb4bec515c243eb42127ccf5ba2765fbed7c (diff) |
drm/msm: use mutex_lock_interruptible for submit ioctl
Be kinder to things that do lots of signal handling (ie. Xorg)
Signed-off-by: Rob Clark <robdclark@gmail.com>
Diffstat (limited to 'drivers/gpu/drm/msm')
-rw-r--r-- | drivers/gpu/drm/msm/msm_gem_submit.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/gpu/drm/msm/msm_gem_submit.c b/drivers/gpu/drm/msm/msm_gem_submit.c index eb4bb8b2f3a5..ea5f709e2e27 100644 --- a/drivers/gpu/drm/msm/msm_gem_submit.c +++ b/drivers/gpu/drm/msm/msm_gem_submit.c | |||
@@ -372,11 +372,15 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data, | |||
372 | if (args->nr_cmds > MAX_CMDS) | 372 | if (args->nr_cmds > MAX_CMDS) |
373 | return -EINVAL; | 373 | return -EINVAL; |
374 | 374 | ||
375 | submit = submit_create(dev, gpu, args->nr_bos); | 375 | ret = mutex_lock_interruptible(&dev->struct_mutex); |
376 | if (!submit) | 376 | if (ret) |
377 | return -ENOMEM; | 377 | return ret; |
378 | 378 | ||
379 | mutex_lock(&dev->struct_mutex); | 379 | submit = submit_create(dev, gpu, args->nr_bos); |
380 | if (!submit) { | ||
381 | ret = -ENOMEM; | ||
382 | goto out_unlock; | ||
383 | } | ||
380 | 384 | ||
381 | ret = submit_lookup_objects(submit, args, file); | 385 | ret = submit_lookup_objects(submit, args, file); |
382 | if (ret) | 386 | if (ret) |
@@ -462,6 +466,7 @@ out: | |||
462 | submit_cleanup(submit); | 466 | submit_cleanup(submit); |
463 | if (ret) | 467 | if (ret) |
464 | msm_gem_submit_free(submit); | 468 | msm_gem_submit_free(submit); |
469 | out_unlock: | ||
465 | mutex_unlock(&dev->struct_mutex); | 470 | mutex_unlock(&dev->struct_mutex); |
466 | return ret; | 471 | return ret; |
467 | } | 472 | } |