OSDN Git Service

drm/syncobj: Avoid kmalloc(GFP_KERNEL) under spinlock
authorChunming Zhou <david1.zhou@amd.com>
Fri, 26 Oct 2018 06:20:27 +0000 (14:20 +0800)
committerChristian König <christian.koenig@amd.com>
Fri, 26 Oct 2018 12:05:22 +0000 (14:05 +0200)
commit4fb2c933c9656435e8300fd6011daa3d4b0128fd
tree898d8465ba7ab41e1e59389921662638b1f17798
parentb1ab1f32015d7ad2a6f94d11400381d82802ab38
drm/syncobj: Avoid kmalloc(GFP_KERNEL) under spinlock

drivers/gpu/drm/drm_syncobj.c:202:4-14: ERROR: function drm_syncobj_find_signal_pt_for_point called on line 390 inside lock on line 389 but uses GFP_KERNEL

  Find functions that refer to GFP_KERNEL but are called with locks held.

Generated by: scripts/coccinelle/locks/call_kern.cocci

v2:
syncobj->timeline still needs protect.

v3:
use a global signaled fence instead of re-allocation.

v4:
Don't need moving lock.
Don't expose func.

v5:
rename func and directly return.

Tested by: syncobj_wait and ./deqp-vk -n dEQP-VK.*semaphore* with
lock debug kernel options enabled.

Signed-off-by: Chunming Zhou <david1.zhou@amd.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: intel-gfx@lists.freedesktop.org
Cc: Christian König <easy2remember.chk@googlemail.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
CC: Julia Lawall <julia.lawall@lip6.fr>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Christian König <christian.koenig@amd.com>
Link: https://patchwork.freedesktop.org/patch/258623/
drivers/gpu/drm/drm_syncobj.c