drm/ttm: Fix a theoretical race in ttm_bo_cleanup_refs()
authorThomas Hellstrom <thellstrom@vmware.com>
Mon, 22 Oct 2012 12:51:26 +0000 (12:51 +0000)
committerDave Airlie <airlied@redhat.com>
Tue, 23 Oct 2012 00:15:21 +0000 (10:15 +1000)
commitb8e902f24fdd16c4373ddc37a4e150c4afe9c6db
treee17556304d126329c63af9367432fe796294d08a
parent7bc17a7837bf4ec8fd2d63438c0b6b0160c454c1
drm/ttm: Fix a theoretical race in ttm_bo_cleanup_refs()

In theory, that function could release the lru lock between
checking for bo on ddestroy list and a successful reserve if the bo
was already reserved, and the function was called with waiting reserves
allowed.
However, all current reservers of a bo on the ddestroy list would
atomically take the bo off the list after a successful reserve so this
race should not have been hit, so no need to backport for stable.

This patch also fixes a case found by Maarten Lankhorst where
ttm_mem_evict_first called with no_wait_gpu would incorrectly
spin waiting for bo idle if trying to evict a busy buffer that
also sits on the ddestroy list.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/ttm/ttm_bo.c