OSDN Git Service

i965: Fix uint64_t overflow in intel_client_wait_sync()
authorKristian Høgsberg <krh@bitplanet.net>
Tue, 3 Mar 2015 00:19:52 +0000 (16:19 -0800)
committerKristian Høgsberg <krh@bitplanet.net>
Wed, 4 Mar 2015 17:55:31 +0000 (09:55 -0800)
commit10c82c6c5fc415d323a5e9c6acdc6a4c85d6b712
treeabffb4c8bf00bae638cb8ab53644bf361307066e
parent65c8965d033cf9ade5e6f3c88bda6d247d46af9d
i965: Fix uint64_t overflow in intel_client_wait_sync()

DRM_IOCTL_I915_GEM_WAIT takes an int64_t for the timeout value but
GL_ARB_sync takes an uint64_t.  Further, the ioctl used to wait
indefinitely when passed a negative timeout, but it's been broken and
now returns immediately in that case.  Thus, if an application passes
UINT64_MAX to wait forever, we overflow to -1LL and return immediately.
Work around this mess by clamping the wait timeout to INT64_MAX.

Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>
Reviewed-by: Chad Versace <chad.versace@intel.com>
src/mesa/drivers/dri/i965/intel_syncobj.c