linux/drivers/gpu/drm/ttm
Nicolai Hähnle c2c139cf43 drm/ttm: never add BO that failed to validate to the LRU list
Fixes a potential race condition in amdgpu that looks as follows:

Task 1: attempt ttm_bo_init, but ttm_bo_validate fails
Task 1: add BO to global list anyway
Task 2: grabs hold of the BO, waits on its reservation lock
Task 1: releases its reference of the BO; never gives up the
        reservation lock

The patch "drm/amdgpu: fix a potential deadlock in
amdgpu_bo_create_restricted()" attempts to fix that by releasing
the reservation lock in amdgpu code; unfortunately, it introduces
a use-after-free when this race _doesn't_ happen.

This patch should fix the race properly by never adding the BO
to the global list in the first place.

Cc: zhoucm1 <david1.zhou@amd.com>
Signed-off-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Tested-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2017-03-29 23:53:05 -04:00
..
Makefile drm/ttm: Remove TTM_HAS_AGP 2016-03-30 17:20:43 +02:00
ttm_agp_backend.c drm/ttm: Remove TTM_HAS_AGP 2016-03-30 17:20:43 +02:00
ttm_bo_manager.c drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
ttm_bo_util.c dma-buf: Rename struct fence to dma_fence 2016-10-25 14:40:39 +02:00
ttm_bo_vm.c mm, fs: reduce fault, page_mkwrite, and pfn_mkwrite to take only vmf 2017-02-24 17:46:54 -08:00
ttm_bo.c drm/ttm: never add BO that failed to validate to the LRU list 2017-03-29 23:53:05 -04:00
ttm_execbuf_util.c locking/atomic, kref: Kill kref_sub() 2017-01-14 11:37:19 +01:00
ttm_lock.c sched/headers: Prepare for new header dependencies before moving code to <linux/sched/signal.h> 2017-03-02 08:42:29 +01:00
ttm_memory.c drm/ttm: Add interface to export kernel_zone max memory size in ttm 2016-08-08 11:33:08 -04:00
ttm_module.c
ttm_object.c locking/atomic, kref: Add kref_read() 2017-01-14 11:37:18 +01:00
ttm_page_alloc_dma.c drm/ttm: remove cpu_address member from ttm_tt 2016-09-16 15:53:05 -04:00
ttm_page_alloc.c drm/ttm: Remove TTM_HAS_AGP 2016-03-30 17:20:43 +02:00
ttm_tt.c drm/ttm: remove cpu_address member from ttm_tt 2016-09-16 15:53:05 -04:00