drm/syncobj: Stop reusing the same struct file for all syncobj -> fd
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 19 Dec 2017 12:07:00 +0000 (12:07 +0000)
committerDave Airlie <airlied@redhat.com>
Fri, 22 Dec 2017 04:14:39 +0000 (14:14 +1000)
commite7cdf5c82f1773c3386b93bbcf13b9bfff29fa31
tree60070ead1a45a5eae0a51c4fc751a906c8477684
parent12e412d785c716fbdcc6021c599f61c48e2872ef
drm/syncobj: Stop reusing the same struct file for all syncobj -> fd

The vk cts test:
dEQP-VK.api.external.semaphore.opaque_fd.export_multiple_times_temporary

triggers a lot of
VFS: Close: file count is 0

Dave pointed out that clearing the syncobj->file from
drm_syncobj_file_release() was sufficient to silence the test, but that
opens a can of worm since we assumed that the syncobj->file was never
unset. Stop trying to reuse the same struct file for every fd pointing
to the drm_syncobj, and allocate one file for each fd instead.

v2: Fixup return handling of drm_syncobj_fd_to_handle
v2.1: [airlied: fix possible syncobj ref race]

Reported-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Tested-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/drm_syncobj.c