Seems I forgot to set the return value after wakeup. Okay?
Index: linux_futex.c
===================================================================
RCS file: /cvs/src/sys/compat/linux/linux_futex.c,v
retrieving revision 1.4
diff -u -p -r1.4 linux_futex.c
--- linux_futex.c 19 Jun 2012 08:50:59 -0000 1.4
+++ linux_futex.c 19 Jun 2012 09:07:54 -0000
@@ -227,6 +227,7 @@ linux_do_futex(struct proc *p, const str
DPRINTF(("FUTEX_WAIT %d: Woke up from uaddr %8.8X with "
"ret = %d\n", tid, SCARG(uap, uaddr), ret));
+ *retval = ret ? -1 : 0;
switch (ret) {
case EWOULDBLOCK: /* timeout */
return ETIMEDOUT;