From e548bda0ec74bb29e48e0eea9a633d52cc7662eb Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Tue, 16 Feb 2010 15:05:55 +0000 Subject: [PATCH] Neither FUTEX_WAKE or FUTEX_WAKE_BITSET actually dereference the futex at all (they just use the address) so we shouldn't insist on it's contents being define. Fixes #224723. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11048 --- coregrind/m_syswrap/syswrap-linux.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c index 7d3e082809..1bff8bbadc 100644 --- a/coregrind/m_syswrap/syswrap-linux.c +++ b/coregrind/m_syswrap/syswrap-linux.c @@ -933,8 +933,6 @@ PRE(sys_futex) break; } - PRE_MEM_READ( "futex(futex)", ARG1, sizeof(Int) ); - *flags |= SfMayBlock; switch(ARG2 & ~(VKI_FUTEX_PRIVATE_FLAG|VKI_FUTEX_CLOCK_REALTIME)) { @@ -942,6 +940,7 @@ PRE(sys_futex) case VKI_FUTEX_LOCK_PI: case VKI_FUTEX_WAIT_BITSET: case VKI_FUTEX_WAIT_REQUEUE_PI: + PRE_MEM_READ( "futex(futex)", ARG1, sizeof(Int) ); if (ARG4 != 0) PRE_MEM_READ( "futex(timeout)", ARG4, sizeof(struct vki_timespec) ); break; @@ -950,14 +949,18 @@ PRE(sys_futex) case VKI_FUTEX_CMP_REQUEUE: case VKI_FUTEX_CMP_REQUEUE_PI: case VKI_FUTEX_WAKE_OP: + PRE_MEM_READ( "futex(futex)", ARG1, sizeof(Int) ); PRE_MEM_READ( "futex(futex2)", ARG5, sizeof(Int) ); break; - case VKI_FUTEX_WAKE: case VKI_FUTEX_FD: - case VKI_FUTEX_WAKE_BITSET: case VKI_FUTEX_TRYLOCK_PI: case VKI_FUTEX_UNLOCK_PI: + PRE_MEM_READ( "futex(futex)", ARG1, sizeof(Int) ); + break; + + case VKI_FUTEX_WAKE: + case VKI_FUTEX_WAKE_BITSET: /* no additional pointers */ break; -- 2.47.2