From: Eric Engestrom Date: Wed, 12 Jun 2019 16:23:27 +0000 (+0100) Subject: util/futex: fix dangling pointer use X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9996ddbb27c9eb39cd234a4abce6c3742572c770;p=mesa.git 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 Signed-off-by: Eric Engestrom --- 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; }