Files
Centos-kernel-stream-10/kernel
CKI KWF Bot e3a8297ee9 Merge: futex: Drop CLONE_THREAD requirement for private default hash alloc
MR: https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-10/-/merge_requests/2928

JIRA: https://issues.redhat.com/browse/RHEL-193520
CVE: CVE-2026-52973

This patch is a backport of the following upstream commit:
commit ee9dce44362b2d8132c32964656ab6dff7dfbc6a
Author: Davidlohr Bueso <dave@stgolabs.net>
Date:   Fri May 1 12:41:23 2026 -0700

    futex: Drop CLONE_THREAD requirement for private default hash alloc

    Currently need_futex_hash_allocate_default() depends on strict pthread
    semantics, abusing CLONE_THREAD.  This breaks the non-concurrency
    assumptions when doing the mm->futex_ref pcpu allocations, leading to
    bugs[0] when sharing the mm in other ways; ie:

        BUG: KASAN: slab-use-after-free in futex_hash_put

    ... where the +1 bias can end up on a percpu counter that mm->futex_ref
    no longer points at.

    Loosen the check to cover any CLONE_VM clone, except vfork().  Excluding
    vfork keeps the existing paths untouched (no overhead), and we can't
    race in the first place: either the parent is suspended and the child
    runs alone, or mm->futex_ref is already allocated from an earlier
    CLONE_VM.

    Link: https://lore.kernel.org/all/CAL_bE8LsmCQ-FAtYDuwbJhOkt9p2wwYQwAbMh=PifC=VsiBM6A@mail.gmail.com/ [0]
    Fixes: d9b05321e21e ("futex: Move futex_hash_free() back to __mmput()")
    Reported-by: Yiming Qian <yimingqian591@gmail.com>
    Signed-off-by: Davidlohr Bueso <dave@stgolabs.net>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Audra Mitchell <audra@redhat.com>

Approved-by: Waiman Long <longman@redhat.com>
Approved-by: Rafael Aquini <raquini@redhat.com>
Approved-by: Ricardo Robaina <rrobaina@redhat.com>
Approved-by: CKI KWF Bot <cki-ci-bot+kwf-gitlab-com@redhat.com>

Merged-by: CKI GitLab Kmaint Pipeline Bot <26919896-cki-kmaint-pipeline-bot@users.noreply.gitlab.com>
2026-07-25 01:08:08 +00:00
..
2026-07-14 19:41:13 +02:00
2026-07-15 15:02:37 +00:00
2025-11-18 14:30:58 -06:00