]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Neither FUTEX_WAKE or FUTEX_WAKE_BITSET actually dereference the
authorTom Hughes <tom@compton.nu>
Tue, 16 Feb 2010 15:05:55 +0000 (15:05 +0000)
committerTom Hughes <tom@compton.nu>
Tue, 16 Feb 2010 15:05:55 +0000 (15:05 +0000)
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

index 7d3e082809b48cbc66a2c07986b09a8b8683c214..1bff8bbadc000c7c106d415f7753fa53d7f78201 100644 (file)
@@ -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;