]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
sched/cache: Fix stale preferred_llc for a new task
authorChen Yu <yu.c.chen@intel.com>
Wed, 13 May 2026 20:39:27 +0000 (13:39 -0700)
committerPeter Zijlstra <peterz@infradead.org>
Mon, 18 May 2026 19:33:18 +0000 (21:33 +0200)
On fork without CLONE_VM, the child gets a new mm,
the parent's preferred_llc value is stale for the
child.

Fix this by resetting the task's preferred_llc to -1.

This bug was reported by sashiko.

Fixes: 47d8696b95f7 ("sched/cache: Assign preferred LLC ID to processes")
Signed-off-by: Chen Yu <yu.c.chen@intel.com>
Co-developed-by: Tim Chen <tim.c.chen@linux.intel.com>
Signed-off-by: Tim Chen <tim.c.chen@linux.intel.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://patch.msgid.link/0ec7309d0e24ede97656754d1505b7490403d966.1778703694.git.tim.c.chen@linux.intel.com
kernel/sched/fair.c

index c249caea3862099da6a401263038cfb5ab97fcf6..2614315a25e0de36e8b933a927baae5a68125740 100644 (file)
@@ -1914,6 +1914,11 @@ void init_sched_mm(struct task_struct *p)
 
        init_task_work(work, task_cache_work);
        work->next = work;
+       /*
+        * Reset new task's preference to avoid
+        * polluting account_llc_enqueue().
+        */
+       p->preferred_llc = -1;
 }
 
 #else /* CONFIG_SCHED_CACHE */