diff options
author | Michel Dänzer <michel.daenzer@amd.com> | 2016-04-01 15:29:26 +0900 |
---|---|---|
committer | Michel Dänzer <michel.daenzer@amd.com> | 2016-04-01 15:29:26 +0900 |
commit | 5ba95c3abeb8df82aa8d33a47596eae6403ea7af (patch) | |
tree | 15c5bc7bbdb7263e893cbb061c51c083496b4d06 /src/amdgpu_drm_queue.h | |
parent | 8ecfa69b5a833bd4c39e773a6acfd7eef9144d13 (diff) |
Identify DRM event queue entries by sequence number instead of by pointer
If the memory for an entry was allocated at the same address as that for
a previously cancelled entry, the handler could theoretically be called
prematurely, triggered by the DRM event which was submitted for the
cancelled entry.
(Ported from radeon commit 4693b1bd5b5c381e8b7b68a6f7f0c6696d6a68df)
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'src/amdgpu_drm_queue.h')
-rw-r--r-- | src/amdgpu_drm_queue.h | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/src/amdgpu_drm_queue.h b/src/amdgpu_drm_queue.h index 892ba13..b4d4009 100644 --- a/src/amdgpu_drm_queue.h +++ b/src/amdgpu_drm_queue.h @@ -43,14 +43,12 @@ typedef void (*amdgpu_drm_abort_proc)(xf86CrtcPtr crtc, void *data); void amdgpu_drm_queue_handler(int fd, unsigned int frame, unsigned int tv_sec, unsigned int tv_usec, void *user_ptr); -struct amdgpu_drm_queue_entry *amdgpu_drm_queue_alloc(xf86CrtcPtr crtc, - ClientPtr client, - uint64_t id, - void *data, - amdgpu_drm_handler_proc handler, - amdgpu_drm_abort_proc abort); +uintptr_t amdgpu_drm_queue_alloc(xf86CrtcPtr crtc, ClientPtr client, + uint64_t id, void *data, + amdgpu_drm_handler_proc handler, + amdgpu_drm_abort_proc abort); void amdgpu_drm_abort_client(ClientPtr client); -void amdgpu_drm_abort_entry(struct amdgpu_drm_queue_entry *entry); +void amdgpu_drm_abort_entry(uintptr_t seq); void amdgpu_drm_abort_id(uint64_t id); void amdgpu_drm_queue_init(); void amdgpu_drm_queue_close(ScrnInfoPtr scrn); |