All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] sched: Fix NULL mm dereference in sched_mm_cid_after_execve()
@ 2025-12-23 21:51 Cong Wang
  2025-12-24 14:28 ` Mathieu Desnoyers
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Cong Wang @ 2025-12-23 21:51 UTC (permalink / raw)
  To: linux-kernel; +Cc: peterz, mathieu.desnoyers, Cong Wang, Thomas Gleixner

From: Cong Wang <cwang@multikernel.io>

sched_mm_cid_after_execve() is called in bprm_execve()'s cleanup path
even when exec_binprm() fails. For the init task's first execve, this
causes a problem:

1. current->mm is NULL (kernel threads don't have an mm)
2. sched_mm_cid_before_execve() exits early because mm is NULL
3. exec_binprm() fails (e.g., ENOENT for missing script interpreter)
4. sched_mm_cid_after_execve() is called with mm still NULL
5. sched_mm_cid_fork() is called unconditionally, triggering WARN_ON

This is easily reproduced by booting with an init that is a shell script
(#!/bin/sh) where the interpreter doesn't exist in the initramfs.

Fix this by checking if t->mm is NULL before calling sched_mm_cid_fork(),
matching the behavior of sched_mm_cid_before_execve() which already
handles this case via sched_mm_cid_exit()'s early return.

Fixes: b0c3d51b54f8 ("sched/mmcid: Provide precomputed maximal value")
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Cong Wang <cwang@multikernel.io>
---
 kernel/sched/core.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 41ba0be16911..60afadb6eede 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -10694,10 +10694,11 @@ void sched_mm_cid_before_execve(struct task_struct *t)
 	sched_mm_cid_exit(t);
 }
 
-/* Reactivate MM CID after successful execve() */
+/* Reactivate MM CID after execve() */
 void sched_mm_cid_after_execve(struct task_struct *t)
 {
-	sched_mm_cid_fork(t);
+	if (t->mm)
+		sched_mm_cid_fork(t);
 }
 
 static void mm_cid_work_fn(struct work_struct *work)
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2026-01-09 13:23 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-23 21:51 [PATCH] sched: Fix NULL mm dereference in sched_mm_cid_after_execve() Cong Wang
2025-12-24 14:28 ` Mathieu Desnoyers
2025-12-30 17:03 ` Qing Wang
2026-01-07 18:00 ` Will Deacon
2026-01-08 15:28   ` Mathieu Desnoyers
2026-01-09 11:53     ` Thomas Gleixner
2026-01-09 13:23       ` Mathieu Desnoyers
2026-01-09 12:05 ` [tip: sched/urgent] sched/mm_cid: Prevent " tip-bot2 for Cong Wang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.