linux_dsm_epyc7002/include/drm
Chris Wilson 39b4d07aa3 drm: Hold the mutex when dropping the last GEM reference (v2)
In order to be fully threadsafe we need to check that the drm_gem_object
refcount is still 0 after acquiring the mutex in order to call the free
function. Otherwise, we may encounter scenarios like:

Thread A:                                        Thread B:
drm_gem_close
unreference_unlocked
kref_put                                         mutex_lock
...                                              i915_gem_evict
...                                              kref_get -> BUG
...                                              i915_gem_unbind
...                                              kref_put
...                                              i915_gem_object_free
...                                              mutex_unlock
mutex_lock
i915_gem_object_free -> BUG
i915_gem_object_unbind
kfree
mutex_unlock

Note that no driver is currently using the free_unlocked vfunc and it is
scheduled for removal, hasten that process.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=30454
Reported-and-Tested-by: Magnus Kessler <Magnus.Kessler@gmx.net>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: stable@kernel.org
Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-10-01 21:08:45 +10:00
..
i2c
ttm
drm_buffer.h
drm_cache.h
drm_core.h
drm_crtc_helper.h
drm_crtc.h drm: Use a nondestructive mode for output detect when polling (v2) 2010-09-14 20:38:48 +10:00
drm_dp_helper.h
drm_edid.h
drm_encoder_slave.h
drm_fb_helper.h
drm_fixed.h
drm_global.h
drm_hashtab.h
drm_mem_util.h
drm_memory.h
drm_mm.h
drm_mode.h
drm_os_linux.h
drm_pciids.h drm/radeon: fix PCI ID 5657 to be an RV410 2010-09-27 09:21:28 +10:00
drm_sarea.h
drm_sman.h
drm_sysfs.h
drm.h
drmP.h drm: Hold the mutex when dropping the last GEM reference (v2) 2010-10-01 21:08:45 +10:00
i810_drm.h
i830_drm.h drm: block userspace under allocating buffer and having drivers overwrite it (v2) 2010-08-17 14:52:25 +10:00
i915_drm.h Merge branch 'drm-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 2010-08-23 18:28:03 -07:00
Kbuild
mga_drm.h drm: block userspace under allocating buffer and having drivers overwrite it (v2) 2010-08-17 14:52:25 +10:00
nouveau_drm.h drm: block userspace under allocating buffer and having drivers overwrite it (v2) 2010-08-17 14:52:25 +10:00
r128_drm.h
radeon_drm.h drm: block userspace under allocating buffer and having drivers overwrite it (v2) 2010-08-17 14:52:25 +10:00
savage_drm.h drm: block userspace under allocating buffer and having drivers overwrite it (v2) 2010-08-17 14:52:25 +10:00
sis_drm.h
via_drm.h
vmwgfx_drm.h