diff options
| author | Peter Zijlstra <peterz@infradead.org> | 2026-09-11 11:04:47 +0200 |
|---|---|---|
| committer | Peter Zijlstra <peterz@infradead.org> | 2026-09-16 14:20:41 +0200 |
| commit | b61b6f95d6722ddbbbd09e689fa41b55fd36f9a5 (patch) | |
| tree | 7f7630064c1ebc856559b7ec792244d0326be04a /kernel | |
| parent | fd73f4a6659897191fa0d40695fe370925dd3780 (diff) | |
futex: Also allocate private hash on vfork()
As Jann demonstrated, it is entirely feasible to access the mm through vfork().
Therefore we need to allocate a private hash on vfork() as well as any other
CLONE_VM user.
Specifically, it must be avoided to have (private) futex waiters before
allocating the private hash.
Fixes: ee9dce44362b ("futex: Drop CLONE_THREAD requirement for private default hash alloc")
Reported-by: Jann Horn <jannh@google.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://patch.msgid.link/20260911090447.GT788244@noisy.programming.kicks-ass.net
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/fork.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index a5934a317634..5ef413368912 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -1996,9 +1996,9 @@ static bool need_futex_hash_allocate_default(u64 clone_flags) { /* * Allocate a default futex hash for any sibling that will - * share the parent's mm, except vfork. + * share the parent's mm. */ - return (clone_flags & (CLONE_VM | CLONE_VFORK)) == CLONE_VM; + return clone_flags & CLONE_VM; } /* |
