diff options
author | Eric Engestrom <[email protected]> | 2019-06-12 17:23:27 +0100 |
---|---|---|
committer | Juan A. Suarez Romero <[email protected]> | 2019-06-14 08:58:54 +0000 |
commit | 582b691062367618e73c0bab03ecf7c03e81fb19 (patch) | |
tree | 15f0902d86788a621c23c4c40ec3de1d3ba715f2 | |
parent | 7e0b89caa9b8cfac6dc0eb51923ab8d072b58bde (diff) |
util/futex: fix dangling pointer use
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110901
Fixes: 7dc2f4788288ec9c7ab6 "util: emulate futex on FreeBSD using umtx"
Cc: Greg V <[email protected]>
Signed-off-by: Eric Engestrom <[email protected]>
(cherry picked from commit 9996ddbb27c9eb39cd234a4abce6c3742572c770)
-rw-r--r-- | src/util/futex.h | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/util/futex.h b/src/util/futex.h index a8b2c0f3527..268af92882a 100644 --- a/src/util/futex.h +++ b/src/util/futex.h @@ -69,15 +69,15 @@ static inline int futex_wake(uint32_t *addr, int count) static inline int futex_wait(uint32_t *addr, int32_t value, struct timespec *timeout) { void *uaddr = NULL, *uaddr2 = NULL; + struct _umtx_time tmo = { + ._flags = UMTX_ABSTIME, + ._clockid = CLOCK_MONOTONIC + }; assert(value == (int)(uint32_t)value); /* Check that bits weren't discarded */ if (timeout != NULL) { - const struct _umtx_time tmo = { - ._timeout = *timeout, - ._flags = UMTX_ABSTIME, - ._clockid = CLOCK_MONOTONIC - }; + tmo._timeout = *timeout; uaddr = (void *)(uintptr_t)sizeof(tmo); uaddr2 = (void *)&tmo; } |