Commit ecbec53b1d00ba582f71b210ed96cafc05ebd189
Committed by
Linus Torvalds
1 parent
e2377fe0b6
Exists in
master
and in
4 other branches
drm/i915: more struct_mutex locking
When auditing the locking in i915_gem.c (for a prospective change which I then abandoned), I noticed two places where struct_mutex is not held across GEM object manipulations that would usually require it. Since one is in initial setup and the other in driver unload, I'm guessing the mutex is not required for either; but post a patch in case it is. Signed-off-by: Hugh Dickins <hughd@google.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Keith Packard <keithp@keithp.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Showing 2 changed files with 6 additions and 2 deletions Side-by-side Diff
drivers/gpu/drm/i915/i915_dma.c
... | ... | @@ -2182,9 +2182,8 @@ |
2182 | 2182 | /* Flush any outstanding unpin_work. */ |
2183 | 2183 | flush_workqueue(dev_priv->wq); |
2184 | 2184 | |
2185 | - i915_gem_free_all_phys_object(dev); | |
2186 | - | |
2187 | 2185 | mutex_lock(&dev->struct_mutex); |
2186 | + i915_gem_free_all_phys_object(dev); | |
2188 | 2187 | i915_gem_cleanup_ringbuffer(dev); |
2189 | 2188 | mutex_unlock(&dev->struct_mutex); |
2190 | 2189 | if (I915_HAS_FBC(dev) && i915_powersave) |
drivers/gpu/drm/i915/intel_overlay.c
... | ... | @@ -1416,6 +1416,8 @@ |
1416 | 1416 | goto out_free; |
1417 | 1417 | overlay->reg_bo = reg_bo; |
1418 | 1418 | |
1419 | + mutex_lock(&dev->struct_mutex); | |
1420 | + | |
1419 | 1421 | if (OVERLAY_NEEDS_PHYSICAL(dev)) { |
1420 | 1422 | ret = i915_gem_attach_phys_object(dev, reg_bo, |
1421 | 1423 | I915_GEM_PHYS_OVERLAY_REGS, |
... | ... | @@ -1440,6 +1442,8 @@ |
1440 | 1442 | } |
1441 | 1443 | } |
1442 | 1444 | |
1445 | + mutex_unlock(&dev->struct_mutex); | |
1446 | + | |
1443 | 1447 | /* init all values */ |
1444 | 1448 | overlay->color_key = 0x0101fe; |
1445 | 1449 | overlay->brightness = -19; |
... | ... | @@ -1464,6 +1468,7 @@ |
1464 | 1468 | i915_gem_object_unpin(reg_bo); |
1465 | 1469 | out_free_bo: |
1466 | 1470 | drm_gem_object_unreference(®_bo->base); |
1471 | + mutex_unlock(&dev->struct_mutex); | |
1467 | 1472 | out_free: |
1468 | 1473 | kfree(overlay); |
1469 | 1474 | return; |