From: Tom Hughes Date: Tue, 16 Feb 2010 15:05:55 +0000 (+0000) Subject: Neither FUTEX_WAKE or FUTEX_WAKE_BITSET actually dereference the X-Git-Tag: svn/VALGRIND_3_6_0~376 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e548bda0ec74bb29e48e0eea9a633d52cc7662eb;p=thirdparty%2Fvalgrind.git 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 --- 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;