linux/drivers/dma-buf
Gustavo Padovan 3792b7c1a7 dma-buf/sw_sync: clean up list before signaling the fence
If userspace already dropped its own reference by closing the sw_sync
fence fd we might end up in a deadlock where
dma_fence_is_signaled_locked() will trigger the release of the fence and
thus try to hold the lock to remove the fence from the list.

dma_fence_is_signaled_locked() tries to release/free the fence and hold
the lock in the process.

We fix that by changing the order operation and clean up the list and
rb-tree first.

v2: Drop fence get/put dance and manipulate the list first (Chris Wilson)

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20170729152217.8362-2-gustavo@padovan.org
2017-07-31 14:11:15 -03:00
..
dma-buf.c dma-buf: Adjust a null pointer check in dma_buf_attach() 2017-05-08 20:50:21 +05:30
dma-fence-array.c dma-fence: add dma_fence_match_context helper 2017-03-17 23:51:36 +05:30
dma-fence.c Linux 4.13-rc2 2017-07-27 08:15:43 +10:00
Kconfig dma-buf: Rename struct fence to dma_fence 2016-10-25 14:40:39 +02:00
Makefile dma-buf: Rename struct fence to dma_fence 2016-10-25 14:40:39 +02:00
reservation.c reservation: revert "wait only with non-zero timeout specified (v3)" v2 2016-11-09 00:48:57 +05:30
seqno-fence.c dma-buf: Rename struct fence to dma_fence 2016-10-25 14:40:39 +02:00
sw_sync.c dma-buf/sw_sync: clean up list before signaling the fence 2017-07-31 14:11:15 -03:00
sync_debug.c Linux 4.13-rc2 2017-07-27 08:15:43 +10:00
sync_debug.h dma-buf/sw-sync: Use an rbtree to sort fences in the timeline 2017-06-29 18:54:07 -03:00
sync_file.c dma-buf/sync_file: Allow multiple sync_files to wrap a single dma-fence 2017-07-29 11:10:52 -03:00
sync_trace.h dma-buf/sw_sync: de-stage SW_SYNC 2016-08-15 16:41:46 +02:00