NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

PR/56828 CVS commit: [netbsd-10] src



The following reply was made to PR kern/56828; it has been noted by GNATS.

From: "Martin Husemann" <martin%netbsd.org@localhost>
To: gnats-bugs%gnats.NetBSD.org@localhost
Cc: 
Subject: PR/56828 CVS commit: [netbsd-10] src
Date: Wed, 21 Oct 2026 18:50:11 +0000

 Module Name:	src
 Committed By:	martin
 Date:		Wed Oct 21 18:50:11 UTC 2026
 
 Modified Files:
 	src/sys/kern [netbsd-10]: sys_futex.c
 	src/tests/lib/libc/sys [netbsd-10]: t_futex_ops.c
 
 Log Message:
 Pull up following revision(s) (requested by riastradh in ticket #1370):
 
 	sys/kern/sys_futex.c: revision 1.20
 	sys/kern/sys_futex.c: revision 1.21
 	sys/kern/sys_futex.c: revision 1.22
 	tests/lib/libc/sys/t_futex_ops.c: revision 1.6
 	tests/lib/libc/sys/t_futex_ops.c: revision 1.7
 	tests/lib/libc/sys/t_futex_ops.c: revision 1.8
 	tests/lib/libc/sys/t_futex_ops.c: revision 1.9
 	tests/lib/libc/sys/t_futex_ops.c: revision 1.10
 
 sys_futex.c: Fix illustration of futex(2).
 
 In this illustration, we need to _set_ bit 1 to claim ownership, not
 _clear_ bit 1 to claim ownership.
 
 No functional change intended -- comment only.
 
 tests/lib/libc/sys/t_futex_ops: Test FUTEX_CMP_REQUEUE edge case.
 
 It must always compare the futex value and fail with EAGAIN on
 mismatch, even if there are no waiters.
 
 PR kern/56828: futex calls in Linux emulation sometimes hang
 
 tests/lib/libc/sys/t_futex_ops: Fix FUTEX_CMP_REQUEUE return values.
 
 The return value is the number of waiters woken _or requeued_, not
 just the number of waiters woken:
 
    FUTEX_CMP_REQUEUE
           Returns the total number of waiters that were woken up or
           requeued to the futex for the futex word at uaddr2.  If
           this value is greater than val, then the difference is the
           number of waiters requeued to the futex for the futex word
           at uaddr2.
 
 https://man7.org/linux/man-pages/man2/futex.2.html
 
 PR kern/56828: futex calls in Linux emulation sometimes hang
 
 tests/lib/libc/sys/t_futex_ops: Fix another FUTEX_CMP_REQUEUE case.
 
 PR kern/56828: futex calls in Linux emulation sometimes hang
 
 futex(2): Fix FUTEX_CMP_REQUEUE to always compare even if no waiters.
 
 It must always compare the futex value and fail with EAGAIN on
 mismatch, even if there are no waiters.
 
   FUTEX_CMP_REQUEUE (since Linux 2.6.7)
          This operation first checks whether the location uaddr
          still contains the value val3.  If not, the operation
          fails with the error EAGAIN.  Otherwise, the operation [...]
 
 https://man7.org/linux/man-pages/man2/futex.2.html
 
 PR kern/56828: futex calls in Linux emulation sometimes hang
 
 futex(2): Fix return value of FUTEX_CMP_REQUEUE.
 
 The return value is the number of waiters woken _or requeued_, not
 just the number of waiters woken:
 
    FUTEX_CMP_REQUEUE
           Returns the total number of waiters that were woken up or
           requeued to the futex for the futex word at uaddr2.  If
           this value is greater than val, then the difference is the
           number of waiters requeued to the futex for the futex word
           at uaddr2.
 
 https://man7.org/linux/man-pages/man2/futex.2.html
 
 While here, clarify some of the arguments with comments so it's not
 quite so cryptic with val/val2/val3 everywhere.
 
 PR kern/56828: futex calls in Linux emulation sometimes hang
 
 
 To generate a diff of this commit:
 cvs rdiff -u -r1.18 -r1.18.4.1 src/sys/kern/sys_futex.c
 cvs rdiff -u -r1.5 -r1.5.10.1 src/tests/lib/libc/sys/t_futex_ops.c
 
 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.
 



Home | Main Index | Thread Index | Old Index