From nobody Mon Jun 8 08:30:46 2026 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BD07448AE2E; Wed, 3 Jun 2026 14:25:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780496708; cv=none; b=uEc/nQm19YjVSkBoudLR1ku6CR/tznfwZ3yqiVEs+AFU5DOHSITpISKM4IKRKFFIPmSVYde2/dTjydifgJnC+0YMDaG6CQBKvpC0owOWK5ye/kilub0Ana3hMhaCKNDz/7W/6PMa6xMHy+ZR1nl6ADjmFrgWLoXMomy9OGHxfZI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780496708; c=relaxed/simple; bh=UbtqvX2ZBG25sFj3VLoZkTBQO8TNehEX2Wt0etgO660=; h=Date:From:To:Subject:Cc:In-Reply-To:References:MIME-Version: Message-ID:Content-Type; b=hrbftGv2FwwK+zySdiW+jHF5ok9TgQKFjq031gSnN3dYMoqinS/TB66MhCMv856mgeRcTx32vymEXLuQtKCBJtfvPIoRQNTVd5wERPGg8xFfDIAev4tZZNEU1U77p9N6rO19lhw65ZYknJyZwPdLV0xDb7nXhbDzdjLLmn7x42A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=x8miUkbB; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=1rubMhDY; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="x8miUkbB"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="1rubMhDY" Date: Wed, 03 Jun 2026 14:25:03 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1780496705; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=KnJ1a8pYq9yTwuJFVbILxfR3X/dLzAAb8fcPEzeeWXY=; b=x8miUkbB4gpcaUH+LW5UrxPHYxIZTprZIL+VT9j6ysp8hhOq1uWff52mqtUCWn1BcvQBsK OBnHu0MQEF+v0d7TaBvgKM4PhtaERMRYg2IfQafyCtxQPHX3zKk7XFekyD0BoIGUD62LZW 1hUaXDZCcgW0vgvmnzUvzymP8pFH6GuNmtDYxn8TdMcxHV0APvYJMDf4e6xrQ7xqCWHm+M YfZXnfcez5D7eWNGQxhUJ2b2gljM+hUt4qetsHRxku6nlcZFx0OsXQfcObPBJWQ971uyd4 uy+NQiINRAZmDkFq2ClvQF64FGNgwA376pqFxYuUcqjrJVpiV5lLaR/Vyy0r7g== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1780496705; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=KnJ1a8pYq9yTwuJFVbILxfR3X/dLzAAb8fcPEzeeWXY=; b=1rubMhDYM8ULMfalr1oCea7h3Q5dATMHY5AG99CGSGh2sxSUWRHpQokeFWNutm/aHaVayJ yDXMsGt/gsz4+vAQ== From: "tip-bot2 for Thomas Gleixner" Sender: tip-bot2@linutronix.de Reply-to: linux-kernel@vger.kernel.org To: linux-tip-commits@vger.kernel.org Subject: [tip: locking/core] futex: Make futex_mm_init() void Cc: Thomas Gleixner , "Peter Zijlstra (Intel)" , x86@kernel.org, linux-kernel@vger.kernel.org In-Reply-To: <20260602090535.356789395@kernel.org> References: <20260602090535.356789395@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-ID: <178049670373.710.5632722740163784780.tip-bot2@tip-bot2> Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails Precedence: bulk Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable The following commit has been merged into the locking/core branch of tip: Commit-ID: d7b3f52c861f54ba2fff15696d3798277fb4c19f Gitweb: https://git.kernel.org/tip/d7b3f52c861f54ba2fff15696d3798277= fb4c19f Author: Thomas Gleixner AuthorDate: Tue, 02 Jun 2026 11:09:29 +02:00 Committer: Peter Zijlstra CommitterDate: Wed, 03 Jun 2026 11:38:49 +02:00 futex: Make futex_mm_init() void Nothing fails there. Mop up the leftovers of the early version of this, which did an allocation. While at it clean up the stubs and the #ifdef comments to make the header file readable. Signed-off-by: Thomas Gleixner Signed-off-by: Peter Zijlstra (Intel) Link: https://patch.msgid.link/20260602090535.356789395@kernel.org --- include/linux/futex.h | 28 +++++++++++----------------- kernel/fork.c | 8 ++------ kernel/futex/core.c | 3 +-- 3 files changed, 14 insertions(+), 25 deletions(-) diff --git a/include/linux/futex.h b/include/linux/futex.h index 563e8dd..9e6218c 100644 --- a/include/linux/futex.h +++ b/include/linux/futex.h @@ -81,22 +81,20 @@ int futex_hash_prctl(unsigned long arg2, unsigned long = arg3, unsigned long arg4) #ifdef CONFIG_FUTEX_PRIVATE_HASH int futex_hash_allocate_default(void); void futex_hash_free(struct mm_struct *mm); -int futex_mm_init(struct mm_struct *mm); - -#else /* !CONFIG_FUTEX_PRIVATE_HASH */ +void futex_mm_init(struct mm_struct *mm); +#else /* CONFIG_FUTEX_PRIVATE_HASH */ static inline int futex_hash_allocate_default(void) { return 0; } static inline int futex_hash_free(struct mm_struct *mm) { return 0; } -static inline int futex_mm_init(struct mm_struct *mm) { return 0; } -#endif /* CONFIG_FUTEX_PRIVATE_HASH */ +static inline void futex_mm_init(struct mm_struct *mm) { } +#endif /* !CONFIG_FUTEX_PRIVATE_HASH */ =20 -#else /* !CONFIG_FUTEX */ +#else /* CONFIG_FUTEX */ static inline void futex_init_task(struct task_struct *tsk) { } static inline void futex_exit_recursive(struct task_struct *tsk) { } static inline void futex_exit_release(struct task_struct *tsk) { } static inline void futex_exec_release(struct task_struct *tsk) { } -static inline long do_futex(u32 __user *uaddr, int op, u32 val, - ktime_t *timeout, u32 __user *uaddr2, - u32 val2, u32 val3) +static inline long do_futex(u32 __user *uaddr, int op, u32 val, ktime_t *t= imeout, + u32 __user *uaddr2, u32 val2, u32 val3) { return -EINVAL; } @@ -104,13 +102,9 @@ static inline int futex_hash_prctl(unsigned long arg2,= unsigned long arg3, unsig { return -EINVAL; } -static inline int futex_hash_allocate_default(void) -{ - return 0; -} +static inline int futex_hash_allocate_default(void) { return 0; } static inline int futex_hash_free(struct mm_struct *mm) { return 0; } -static inline int futex_mm_init(struct mm_struct *mm) { return 0; } - -#endif +static inline void futex_mm_init(struct mm_struct *mm) { } +#endif /* !CONFIG_FUTEX */ =20 -#endif +#endif /* _LINUX_FUTEX_H */ diff --git a/kernel/fork.c b/kernel/fork.c index 5f3fdfd..bb490d9 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -1101,6 +1101,7 @@ static struct mm_struct *mm_init(struct mm_struct *mm= , struct task_struct *p, #endif mm_init_uprobes_state(mm); hugetlb_count_init(mm); + futex_mm_init(mm); =20 mm_flags_clear_all(mm); if (current->mm) { @@ -1113,11 +1114,8 @@ static struct mm_struct *mm_init(struct mm_struct *m= m, struct task_struct *p, mm->def_flags =3D 0; } =20 - if (futex_mm_init(mm)) - goto fail_mm_init; - if (mm_alloc_pgd(mm)) - goto fail_nopgd; + goto fail_mm_init; =20 if (mm_alloc_id(mm)) goto fail_noid; @@ -1144,8 +1142,6 @@ fail_nocontext: mm_free_id(mm); fail_noid: mm_free_pgd(mm); -fail_nopgd: - futex_hash_free(mm); fail_mm_init: free_mm(mm); return NULL; diff --git a/kernel/futex/core.c b/kernel/futex/core.c index e7d33d2..ec23de4 100644 --- a/kernel/futex/core.c +++ b/kernel/futex/core.c @@ -1720,7 +1720,7 @@ static bool futex_ref_is_dead(struct futex_private_ha= sh *fph) return atomic_long_read(&mm->futex_atomic) =3D=3D 0; } =20 -int futex_mm_init(struct mm_struct *mm) +void futex_mm_init(struct mm_struct *mm) { mutex_init(&mm->futex_hash_lock); RCU_INIT_POINTER(mm->futex_phash, NULL); @@ -1729,7 +1729,6 @@ int futex_mm_init(struct mm_struct *mm) mm->futex_ref =3D NULL; atomic_long_set(&mm->futex_atomic, 0); mm->futex_batches =3D get_state_synchronize_rcu(); - return 0; } =20 void futex_hash_free(struct mm_struct *mm)