From nobody Fri Sep 25 23:53:10 2026 Received: from mta0.migadu.com (out-246.mta0.migadu.com [91.218.175.246]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6CC3643B4BF for ; Mon, 7 Sep 2026 08:14:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.246 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788768849; cv=none; b=BWuX7fKXrcO8IIsfHL4dnq8ySrvOuLIE/2I2SpZC/zaRQ3Hgjzz3MK8fbIk53VekxJyb2QwYodInlnGbYSDjn/hhkvrGMpH+0Yq609OKuH+gfr8nGaKehcR7yrGD0W17rORC2oD1iSa30cfuNqXzy+yA+FMIfSHcXD5D5Rg/7QA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788768849; c=relaxed/simple; bh=nMTgYk091e0ILTHhRnXGH4A+hErpEAVN/BDSGxT7uPw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Kt3DLSoasioHP43ynVT/ijb+Gg8tB38gpw67/OQLSGLfyKy4geM1HMeWQZ1nFeAyZ4z3L8L6G7dmGJljo8NqjGMyQafL/D4LlPEkJu6X7HxExXn6KWvb9vFhd7QHcr/dBxPd/pi5T1W7mGDseX83jiyRlWPpbTaj0FvrLe+y1po= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=fRc/27Rj; arc=none smtp.client-ip=91.218.175.246 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="fRc/27Rj" X-Envelope-To: linux-kernel@vger.kernel.org DKIM-Signature: a=rsa-sha256; bh=nMTgYk091e0ILTHhRnXGH4A+hErpEAVN/BDSGxT7uPw=; c=simple/simple; d=linux.dev; h=from:to:subject:date:message-id:mime-version:content-type; s=key1; t=1788768845; v=1; x=1789373645; b=fRc/27Rjb5/PrkOFN1fx1eZb0T5Uj4Qi6vPGV0FxSSZJ4oymS/zA0GU58VMKGHCBqAfkWM4h zFuuexu+23T9Nr22OHgWaPsDLqg49WrDyVwGLpG56T8jJMdPhKvWVlICc9BKOwB+MJGjF9wdp8w bm65RXoDeoZlBp/kUGh5J+pw= X-Envelope-To: linux-kernel@vger.kernel.org Received: by smtp.migadu.com with ESMTPS id e2e364529cd50751; Mon, 07 Sep 2026 08:14:04 +0000 X-Mizu-Trace-ID: e2e364529cd50751 X-Migadu-Flow: FLOW_OUT From: Ye Liu To: Oleg Nesterov , "Peter Zijlstra (Intel)" , Marco Elver , Ye Liu , Tejun Heo , Christian Brauner , Bart Van Assche , Yi Tao Cc: Michal Hocko , paulmck@kernel.org, mingo@redhat.com, rostedt@goodmis.org, jpoimboe@kernel.org, mic@digikod.net, tglx@kernel.org, akpm@linux-foundation.org, david@kernel.org, linmiaohe@huawei.com, nao.horiguchi@gmail.com, rafael@kernel.org, gnoack3000@gmail.com, ljs@kernel.org, sj@kernel.org, rientjes@google.com, shakeel.butt@linux.dev, xu.xin16@zte.com.cn, chengming.zhou@linux.dev, will@kernel.org, boqun@kernel.org, frederic@kernel.org, neeraj.upadhyay@kernel.org, joelagnelf@nvidia.com, josh@joshtriplett.org, urezki@gmail.com, juri.lelli@redhat.com, vincent.guittot@linaro.org, tony.luck@intel.com, reinette.chatre@intel.com, x86@kernel.org, paul@paul-moore.com, jmorris@namei.org, serge@hallyn.com, pavel@kernel.org, lance.yang@linux.dev, mhiramat@kernel.org, pmladek@suse.com, longman@redhat.com, mathieu.desnoyers@efficios.com, jiangshanlai@gmail.com, qiang.zhang@linux.dev, dietmar.eggemann@arm.com, bsegall@google.com, mgorman@suse.de, vschneid@redhat.com, kprateek.nayak@amd.com, mark.rutland@arm.com, Dave.Martin@arm.com, james.morse@arm.com, babu.moger@amd.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, rcu@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-security-module@vger.kernel.org Subject: [PATCH v2 1/8] sched: introduce for_each_process_rculock and for_each_thread_rculock Date: Mon, 7 Sep 2026 16:13:27 +0800 Message-Id: <20260907081334.1152889-2-ye.liu@linux.dev> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260907081334.1152889-1-ye.liu@linux.dev> References: <20260907081334.1152889-1-ye.liu@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ye Liu Introduce for_each_process_rculock(), for_each_thread_rculock() and for_each_process_thread_rculock() macros that acquire the RCU read lock before the iteration starts and release it when the loop is left, so that the RCU read-side critical section is scoped to the loop body instead of an externally managed rcu_read_lock()/rcu_read_unlock() pair. Signed-off-by: Ye Liu Acked-by: Michal Hocko Reviewed-by: Gregory Price (Meta) Reviewed-by: Lorenzo Stoakes (ARM) Reviewed-by: Oleg Nesterov Reviewed-by: SJ Park --- Changes in v2: - Rename macros from *_rcu to *_rculock (Steven Rostedt, Thomas Gleixner) - Improve comment on for_each_process_thread_rculock() double loop - Change prefix from mm: to sched: (Michal Hocko) include/linux/sched/signal.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/include/linux/sched/signal.h b/include/linux/sched/signal.h index 584ae88b435e..110ea9f131f3 100644 --- a/include/linux/sched/signal.h +++ b/include/linux/sched/signal.h @@ -2,6 +2,7 @@ #ifndef _LINUX_SCHED_SIGNAL_H #define _LINUX_SCHED_SIGNAL_H =20 +#include #include #include #include @@ -663,6 +664,30 @@ extern bool current_is_single_threaded(void); #define for_each_process_thread(p, t) \ for_each_process(p) for_each_thread(p, t) =20 +/* + * Variants of for_each_process(), for_each_thread() and + * for_each_process_thread() that automatically acquire and release the + * RCU read lock via scoped_guard(rcu). The lock is held for the + * duration of the loop and released on exit, including via break, + * goto, or return. + */ +#define for_each_process_rculock(p) \ + scoped_guard(rcu) \ + for (p =3D &init_task ; (p =3D next_task(p)) !=3D &init_task ; ) + +#define for_each_thread_rculock(p, t) \ + scoped_guard(rcu) \ + __for_each_thread((p)->signal, t) + +/* + * Double loop: 'break' only exits the inner for_each_thread() loop. + * Use 'goto' to exit both loops; the RCU read lock is released + * automatically when the scoped_guard scope is left. + */ +#define for_each_process_thread_rculock(p, t) \ + scoped_guard(rcu) \ + for_each_process(p) for_each_thread(p, t) + typedef int (*proc_visitor)(struct task_struct *p, void *data); void walk_process_tree(struct task_struct *top, proc_visitor, void *); =20 --=20 2.25.1 From nobody Fri Sep 25 23:53:10 2026 Received: from mta0.migadu.com (out-13.mta0.migadu.com [91.218.175.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 28B9B43E06B for ; Mon, 7 Sep 2026 08:14:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788768861; cv=none; b=GkEEKYS2XIwl9SRVQmt0zX2I9P7V0Udy4E2TXzUP0fU/TJTZme4Zl6jB4Cf/JI4VNl6IKhCHvU7/nfLxVbN/TR7sPuoK8+MomXvNkBZ98C5G6u+Dr0N8jQXNOUEVRhCfxHb8LmMrk6OkyDAHFoNupZoOSRVxuXe7FTls2ECSdjs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788768861; c=relaxed/simple; bh=ASmH7PI5FjNsmJJfvtLeEl3jMhKoYtXHiDpYlixm7NE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=kODb5/F4Bt03lNHQ8NMl8ogIhZVimXJWEuNJyF6OT00GTeCkcu4LbePTWqjDL1bdWmtO6106xBeyThs84tFU4FtdIi0rDtjC9M1E+h06q8Ih08PNrcyUol8gpUNIMbIHvq49l0ttxlyrI57evj/m6XtqmqdeyPYVtdPjU4Pw7gw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=PkoZv9VB; arc=none smtp.client-ip=91.218.175.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="PkoZv9VB" X-Envelope-To: linux-kernel@vger.kernel.org DKIM-Signature: a=rsa-sha256; bh=ASmH7PI5FjNsmJJfvtLeEl3jMhKoYtXHiDpYlixm7NE=; c=simple/simple; d=linux.dev; h=from:to:subject:date:message-id:mime-version:content-type; s=key1; t=1788768857; v=1; x=1789373657; b=PkoZv9VByCYw+CljyqOF9vhxvVFtrnkwU1ESoTtbbzZMX+REPxlmCfAl3qLoVoYKZPvAzwyh +1BeCydxCCbXVJCnECU0fqJmK8b9xDXFZiRik0vgS6hFllrBdVgmpVU9EDMs9z6FOcnl8W+AaKl pj4TF64ee11t915IW3tj1a7M= X-Envelope-To: linux-kernel@vger.kernel.org Received: by smtp.migadu.com with ESMTPS id be9bc340ab630053; Mon, 07 Sep 2026 08:14:16 +0000 X-Mizu-Trace-ID: be9bc340ab630053 X-Migadu-Flow: FLOW_OUT From: Ye Liu To: Michal Hocko , Andrew Morton Cc: Ye Liu , SJ Park , peterz@infradead.org, paulmck@kernel.org, mingo@redhat.com, rostedt@goodmis.org, jpoimboe@kernel.org, mic@digikod.net, oleg@redhat.com, tglx@kernel.org, david@kernel.org, linmiaohe@huawei.com, nao.horiguchi@gmail.com, rafael@kernel.org, gnoack3000@gmail.com, ljs@kernel.org, rientjes@google.com, shakeel.butt@linux.dev, xu.xin16@zte.com.cn, chengming.zhou@linux.dev, will@kernel.org, boqun@kernel.org, frederic@kernel.org, neeraj.upadhyay@kernel.org, joelagnelf@nvidia.com, josh@joshtriplett.org, urezki@gmail.com, juri.lelli@redhat.com, vincent.guittot@linaro.org, tony.luck@intel.com, reinette.chatre@intel.com, x86@kernel.org, paul@paul-moore.com, jmorris@namei.org, serge@hallyn.com, pavel@kernel.org, lance.yang@linux.dev, mhiramat@kernel.org, pmladek@suse.com, longman@redhat.com, mathieu.desnoyers@efficios.com, jiangshanlai@gmail.com, qiang.zhang@linux.dev, dietmar.eggemann@arm.com, bsegall@google.com, mgorman@suse.de, vschneid@redhat.com, kprateek.nayak@amd.com, mark.rutland@arm.com, Dave.Martin@arm.com, james.morse@arm.com, babu.moger@amd.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, rcu@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-security-module@vger.kernel.org Subject: [PATCH v2 2/8] mm/oom_kill: convert process/thread iterators to for_each_*_rculock Date: Mon, 7 Sep 2026 16:13:28 +0800 Message-Id: <20260907081334.1152889-3-ye.liu@linux.dev> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260907081334.1152889-1-ye.liu@linux.dev> References: <20260907081334.1152889-1-ye.liu@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ye Liu Replace the manual rcu_read_lock()/rcu_read_unlock() pairs wrapping for_each_process()/for_each_thread() loops with for_each_process_rculock() and for_each_thread_rculock(), which scope the RCU read lock to the loop body via scoped_guard(rcu). No functional change. Signed-off-by: Ye Liu Acked-by: Michal Hocko Reviewed-by: SJ Park Reviewed-by: Gregory Price (Meta) Reviewed-by: Lorenzo Stoakes (ARM) --- Changes in v2: - Rename *_rcu to *_rculock mm/oom_kill.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/mm/oom_kill.c b/mm/oom_kill.c index 5f372f6e26fa..ef2e1c423c1d 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c @@ -94,8 +94,7 @@ static bool oom_cpuset_eligible(struct task_struct *start, bool ret =3D false; const nodemask_t *mask =3D oc->nodemask; =20 - rcu_read_lock(); - for_each_thread(start, tsk) { + for_each_thread_rculock(start, tsk) { if (mask) { /* * If this is a mempolicy constrained oom, tsk's @@ -114,7 +113,6 @@ static bool oom_cpuset_eligible(struct task_struct *sta= rt, if (ret) break; } - rcu_read_unlock(); =20 return ret; } @@ -368,11 +366,9 @@ static void select_bad_process(struct oom_control *oc) else { struct task_struct *p; =20 - rcu_read_lock(); - for_each_process(p) + for_each_process_rculock(p) if (oom_evaluate_task(p, oc)) break; - rcu_read_unlock(); } } =20 @@ -430,14 +426,12 @@ static void dump_tasks(struct oom_control *oc) struct task_struct *p; int i =3D 0; =20 - rcu_read_lock(); - for_each_process(p) { + for_each_process_rculock(p) { /* Avoid potential softlockup warning */ if ((++i & 1023) =3D=3D 0) touch_softlockup_watchdog(); dump_task(p, oc); } - rcu_read_unlock(); } } =20 @@ -894,8 +888,7 @@ static bool task_will_free_mem(struct task_struct *task) * are dying as well to make sure that a) nobody pins its mm and * b) the task is also reapable by the oom reaper. */ - rcu_read_lock(); - for_each_process(p) { + for_each_process_rculock(p) { if (!process_shares_mm(p, mm)) continue; if (same_thread_group(task, p)) @@ -904,7 +897,6 @@ static bool task_will_free_mem(struct task_struct *task) if (!ret) break; } - rcu_read_unlock(); =20 return ret; } @@ -960,8 +952,7 @@ static void __oom_kill_process(struct task_struct *vict= im, const char *message) * That thread will now get access to memory reserves since it has a * pending fatal signal. */ - rcu_read_lock(); - for_each_process(p) { + for_each_process_rculock(p) { if (!process_shares_mm(p, mm)) continue; if (same_thread_group(p, victim)) @@ -982,7 +973,6 @@ static void __oom_kill_process(struct task_struct *vict= im, const char *message) continue; do_send_sig_info(SIGKILL, SEND_SIG_PRIV, p, PIDTYPE_TGID); } - rcu_read_unlock(); =20 if (can_oom_reap) queue_oom_reaper(victim); --=20 2.25.1 From nobody Fri Sep 25 23:53:10 2026 Received: from mta0.migadu.com (out-43.mta0.migadu.com [91.218.175.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 58C4B44212E for ; Mon, 7 Sep 2026 08:14:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788768874; cv=none; b=g7rmGOtsT7lToDiLawq+56QHFuhbHfrBmJWCilWUk+gKensRFvYXDFa9YRzStxk4bZ66G4usKi33KVTW2cPeHU7VfujTIrDS8x9xC7vVmOQFhIQtLJ5ZlsMAkaMrCcXLx7AnrX7vCEFhRROUKvbK+rq/LpTnzrfoED2c93fODaY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788768874; c=relaxed/simple; bh=6kM1mhZIXKCqG82ZEU8Zg2E+W3wWN+Noa5dvNKDqX9Q=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ierGPrRq8CrIArpj6ST0Mcumna0SoAiCC+7UR7RTZ4aluFjq7Js//PKPDhgIbxCkr/rebadTVGXg4t2L2DXh8j3cijLcPFU89AIr139Qy7mTRoZva6dJa7BB4L7dSGyfDnYGrQu3nQBNRJft7GBKhdsgNeNCZL80gNZLaIDG96o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=SeAR3wC+; arc=none smtp.client-ip=91.218.175.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="SeAR3wC+" X-Envelope-To: linux-kernel@vger.kernel.org DKIM-Signature: a=rsa-sha256; bh=6kM1mhZIXKCqG82ZEU8Zg2E+W3wWN+Noa5dvNKDqX9Q=; c=simple/simple; d=linux.dev; h=from:to:subject:date:message-id:mime-version:content-type; s=key1; t=1788768869; v=1; x=1789373669; b=SeAR3wC+S+BoPeOWhiwZ1ExCMOL33F8+JW2ndzYMAcibmCHzhG7YQeJV7yOSX1v3dDe2Cu0k c/2p9mcAhFS7cGoAYbno/JD4rakdHS0TJ2R6YM+dCd0+yYizFekwwdnC9p/wiK/vj3ehjrAonSd 7lVtdFOsHjAxcrFMllVj4oNA= X-Envelope-To: linux-kernel@vger.kernel.org Received: by smtp.migadu.com with ESMTPS id 2731654c1e840797; Mon, 07 Sep 2026 08:14:28 +0000 X-Mizu-Trace-ID: 2731654c1e840797 X-Migadu-Flow: FLOW_OUT From: Ye Liu To: Andrew Morton , David Hildenbrand Cc: Ye Liu , Michal Hocko , SJ Park , peterz@infradead.org, paulmck@kernel.org, mingo@redhat.com, rostedt@goodmis.org, jpoimboe@kernel.org, mic@digikod.net, oleg@redhat.com, tglx@kernel.org, linmiaohe@huawei.com, nao.horiguchi@gmail.com, rafael@kernel.org, gnoack3000@gmail.com, ljs@kernel.org, rientjes@google.com, shakeel.butt@linux.dev, xu.xin16@zte.com.cn, chengming.zhou@linux.dev, will@kernel.org, boqun@kernel.org, frederic@kernel.org, neeraj.upadhyay@kernel.org, joelagnelf@nvidia.com, josh@joshtriplett.org, urezki@gmail.com, juri.lelli@redhat.com, vincent.guittot@linaro.org, tony.luck@intel.com, reinette.chatre@intel.com, x86@kernel.org, paul@paul-moore.com, jmorris@namei.org, serge@hallyn.com, pavel@kernel.org, lance.yang@linux.dev, mhiramat@kernel.org, pmladek@suse.com, longman@redhat.com, mathieu.desnoyers@efficios.com, jiangshanlai@gmail.com, qiang.zhang@linux.dev, dietmar.eggemann@arm.com, bsegall@google.com, mgorman@suse.de, vschneid@redhat.com, kprateek.nayak@amd.com, mark.rutland@arm.com, Dave.Martin@arm.com, james.morse@arm.com, babu.moger@amd.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, rcu@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-security-module@vger.kernel.org Subject: [PATCH v2 3/8] mm/ksm: convert process iterator to for_each_process_rculock Date: Mon, 7 Sep 2026 16:13:29 +0800 Message-Id: <20260907081334.1152889-4-ye.liu@linux.dev> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260907081334.1152889-1-ye.liu@linux.dev> References: <20260907081334.1152889-1-ye.liu@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ye Liu Replace the manual rcu_read_lock()/rcu_read_unlock() pair combined with for_each_process() loop in mm/ksm.c with for_each_process_rculock(), which scopes the RCU read lock to the loop body via scoped_guard(rcu). No functional change. Signed-off-by: Ye Liu Acked-by: Michal Hocko Reviewed-by: SJ Park Acked-by: David Hildenbrand (Arm) Reviewed-by: Gregory Price (Meta) Reviewed-by: Lorenzo Stoakes (ARM) --- Changes in v2: - Rename *_rcu to *_rculock mm/ksm.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mm/ksm.c b/mm/ksm.c index 49d48d1e0998..69d30e80a090 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -3280,8 +3280,7 @@ void collect_procs_ksm(const struct folio *folio, con= st struct page *page, struct anon_vma *av =3D rmap_item->anon_vma; =20 anon_vma_lock_read(av); - rcu_read_lock(); - for_each_process(tsk) { + for_each_process_rculock(tsk) { struct anon_vma_chain *vmac; const unsigned long addr =3D rmap_item->address & PAGE_MASK; const unsigned long index =3D rmap_item->linear_page_index; @@ -3298,7 +3297,6 @@ void collect_procs_ksm(const struct folio *folio, con= st struct page *page, } } } - rcu_read_unlock(); anon_vma_unlock_read(av); } } --=20 2.25.1 From nobody Fri Sep 25 23:53:10 2026 Received: from mta0.migadu.com (out-66.mta0.migadu.com [91.218.175.66]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 24F0F443A88 for ; Mon, 7 Sep 2026 08:14:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.66 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788768885; cv=none; b=Ip/zPgbG5HbYuxedD3CAYpjdzqY9cOdPK7feTN9C82219xuW8ARTM/C9tuo/W0862BbTPUhhCkxsUIEBWXQ7Oh5vMWqo/Ac4qaMdCD95XvZJEsXhou7O28LjB+sgYz1T+uY2pSq5pKxdxwBj5uQxE6NSDFNsyZELKyEELbF29b8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788768885; c=relaxed/simple; bh=DbvxqJsFC8I1jdIyCJVYNExbjeNMqAcKd+QJ2gOnSsI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=UoNqtePEkUW6o4BRvzUZ5f+EBvWL+f6R59ScU8zUoCtZFB8fBDStJ6qssmbri2a9qi/0pKBK7Uykw+ExmLTGieab3raFTkEjQEglpgmw7WpwZ0lzZmSQH5EQcH1TgvseGoPi+b7qscMr5dwjIxdFXffWcxPL+30Q9XNdTcj0fPw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=QsEv9tJx; arc=none smtp.client-ip=91.218.175.66 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="QsEv9tJx" X-Envelope-To: linux-kernel@vger.kernel.org DKIM-Signature: a=rsa-sha256; bh=DbvxqJsFC8I1jdIyCJVYNExbjeNMqAcKd+QJ2gOnSsI=; c=simple/simple; d=linux.dev; h=from:to:subject:date:message-id:mime-version:content-type; s=key1; t=1788768881; v=1; x=1789373681; b=QsEv9tJx+htfHkVlXBVh0jqEMfIZhKIiV4pwh/o31FxltAeubh5Va9WuiRzlYNnLS4RGXW4x 3HwvGovI4EWm2dTeyV1ldFWXVea0E0hYEE3zKgj/wnYlr9LKJjErOiTjJr0WPsIeC7AFEexLstq DOoFXOu/yiKrsNroNAKn+bhU= X-Envelope-To: linux-kernel@vger.kernel.org Received: by smtp.migadu.com with ESMTPS id a8a672054efb182f; Mon, 07 Sep 2026 08:14:40 +0000 X-Mizu-Trace-ID: a8a672054efb182f X-Migadu-Flow: FLOW_OUT From: Ye Liu To: Miaohe Lin , Andrew Morton Cc: Ye Liu , Michal Hocko , peterz@infradead.org, paulmck@kernel.org, mingo@redhat.com, rostedt@goodmis.org, jpoimboe@kernel.org, mic@digikod.net, oleg@redhat.com, tglx@kernel.org, david@kernel.org, nao.horiguchi@gmail.com, rafael@kernel.org, gnoack3000@gmail.com, ljs@kernel.org, sj@kernel.org, rientjes@google.com, shakeel.butt@linux.dev, xu.xin16@zte.com.cn, chengming.zhou@linux.dev, will@kernel.org, boqun@kernel.org, frederic@kernel.org, neeraj.upadhyay@kernel.org, joelagnelf@nvidia.com, josh@joshtriplett.org, urezki@gmail.com, juri.lelli@redhat.com, vincent.guittot@linaro.org, tony.luck@intel.com, reinette.chatre@intel.com, x86@kernel.org, paul@paul-moore.com, jmorris@namei.org, serge@hallyn.com, pavel@kernel.org, lance.yang@linux.dev, mhiramat@kernel.org, pmladek@suse.com, longman@redhat.com, mathieu.desnoyers@efficios.com, jiangshanlai@gmail.com, qiang.zhang@linux.dev, dietmar.eggemann@arm.com, bsegall@google.com, mgorman@suse.de, vschneid@redhat.com, kprateek.nayak@amd.com, mark.rutland@arm.com, Dave.Martin@arm.com, james.morse@arm.com, babu.moger@amd.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, rcu@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-security-module@vger.kernel.org Subject: [PATCH v2 4/8] mm/memory-failure: convert process iterator to for_each_process_rculock Date: Mon, 7 Sep 2026 16:13:30 +0800 Message-Id: <20260907081334.1152889-5-ye.liu@linux.dev> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260907081334.1152889-1-ye.liu@linux.dev> References: <20260907081334.1152889-1-ye.liu@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ye Liu Replace the manual rcu_read_lock()/rcu_read_unlock() pairs combined with for_each_process() loop in mm/memory-failure.c with for_each_process_rculock(), which scopes the RCU read lock to the loop body via scoped_guard(rcu). In collect_procs_file(), the page_pgoff() call now falls outside the RCU read-side critical section. This is safe because page_pgoff() only reads folio->index and does not traverse any RCU-protected structures. Signed-off-by: Ye Liu Acked-by: Michal Hocko Acked-by: Miaohe Lin Reviewed-by: Gregory Price (Meta) Reviewed-by: Lorenzo Stoakes (ARM) Reviewed-by: SJ Park --- Changes in v2: - Rename *_rcu to *_rculock - Clarify page_pgoff() safety outside RCU lock (SJ Park) mm/memory-failure.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/mm/memory-failure.c b/mm/memory-failure.c index a8b03e2920ba..7d93deb1f7b3 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -555,8 +555,7 @@ static void collect_procs_anon(const struct folio *foli= o, return; =20 pgoff =3D page_pgoff(folio, page); - rcu_read_lock(); - for_each_process(tsk) { + for_each_process_rculock(tsk) { struct vm_area_struct *vma; struct anon_vma_chain *vmac; struct task_struct *t =3D task_early_kill(tsk, force_early); @@ -572,7 +571,6 @@ static void collect_procs_anon(const struct folio *foli= o, add_to_kill_anon_file(t, page, vma, to_kill, addr); } } - rcu_read_unlock(); anon_vma_unlock_read(av); } =20 @@ -589,9 +587,8 @@ static void collect_procs_file(const struct folio *foli= o, pgoff_t pgoff; =20 i_mmap_lock_read(mapping); - rcu_read_lock(); pgoff =3D page_pgoff(folio, page); - for_each_process(tsk) { + for_each_process_rculock(tsk) { struct task_struct *t =3D task_early_kill(tsk, force_early); unsigned long addr; =20 @@ -611,7 +608,6 @@ static void collect_procs_file(const struct folio *foli= o, add_to_kill_anon_file(t, page, vma, to_kill, addr); } } - rcu_read_unlock(); i_mmap_unlock_read(mapping); } =20 @@ -635,8 +631,7 @@ static void collect_procs_fsdax(const struct page *page, struct task_struct *tsk; =20 i_mmap_lock_read(mapping); - rcu_read_lock(); - for_each_process(tsk) { + for_each_process_rculock(tsk) { struct task_struct *t =3D tsk; =20 /* @@ -653,7 +648,6 @@ static void collect_procs_fsdax(const struct page *page, add_to_kill_fsdax(t, page, vma, to_kill, pgoff); } } - rcu_read_unlock(); i_mmap_unlock_read(mapping); } #endif /* CONFIG_FS_DAX */ @@ -2288,8 +2282,7 @@ static void collect_procs_pfn(struct pfn_address_spac= e *pfn_space, struct address_space *mapping =3D pfn_space->mapping; =20 i_mmap_lock_read(mapping); - rcu_read_lock(); - for_each_process(tsk) { + for_each_process_rculock(tsk) { struct task_struct *t =3D tsk; =20 t =3D task_early_kill(tsk, true); @@ -2303,7 +2296,6 @@ static void collect_procs_pfn(struct pfn_address_spac= e *pfn_space, add_to_kill_pgoff(t, vma, to_kill, pgoff); } } - rcu_read_unlock(); i_mmap_unlock_read(mapping); } =20 --=20 2.25.1 From nobody Fri Sep 25 23:53:10 2026 Received: from mta1.migadu.com (out-225.mta1.migadu.com [95.215.58.225]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F0EB043E071 for ; Mon, 7 Sep 2026 08:14:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.225 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788768897; cv=none; b=nmLJatnJzpMW5n4C0sixPTGN+KfZXVd0d2f0Ef82Kc9yr1Lv78PAOGFmExLci8HlEZBs/OWCSG9arywkY8i8i3dNpAX9nJYcEMK/m3Vq4A5hkFYAnwMNanMEdBCJpx4mQrXFIA5cMLH5x7AfAUBaq7A5RFbRfwvSnNwsOesd3Ks= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788768897; c=relaxed/simple; bh=GYHf+zbpJIbN8wdET2m2KoX50bTFoVYyZ6SIH+UzDwc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=GL+MyXQVz9TbclIE5+dPzOr40XlQ09H2qgpQuONpxC8pXUYHndZyjibHtTe/Ep54hw4SigxHJUr9zoigbcLUVLMjwRi/BiGmgotpPcyag8YI6jNS8YgJAuwTEzPhPCcEOGlYsAtAyKG4Hkd5SyfX5A1z4viUjMr8qS/2IVpHfIg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=MOc/mC2A; arc=none smtp.client-ip=95.215.58.225 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="MOc/mC2A" X-Envelope-To: linux-kernel@vger.kernel.org DKIM-Signature: a=rsa-sha256; bh=GYHf+zbpJIbN8wdET2m2KoX50bTFoVYyZ6SIH+UzDwc=; c=simple/simple; d=linux.dev; h=from:to:subject:date:message-id:mime-version:content-type; s=key1; t=1788768894; v=1; x=1789373694; b=MOc/mC2AliSYf/QE9dGsNhWvkEEtPI0PpObZW5TPjZIXRl86mLaBVkCw/5QFm6MeG8zIEIzx 1vv4xLl9OqEdXoHS4ctmBuu/Yc/IwBYuOyOkwhg8GCDkJTtZHOT8DDxRsr0g3fdfxdWlYq1hkBd hPKjisOWpKyh1ogG4LIhPEKM= X-Envelope-To: linux-kernel@vger.kernel.org Received: by smtp.migadu.com with ESMTPS id 70f3f824a87c0db2; Mon, 07 Sep 2026 08:14:52 +0000 X-Mizu-Trace-ID: 70f3f824a87c0db2 X-Migadu-Flow: FLOW_OUT From: Ye Liu To: Thomas Gleixner , Peter Zijlstra , "Rafael J. Wysocki" , Andrew Morton , Ingo Molnar , Will Deacon , Boqun Feng , "Paul E. McKenney" , Frederic Weisbecker , Neeraj Upadhyay , Joel Fernandes , Josh Triplett , Uladzislau Rezki , Juri Lelli , Vincent Guittot , Steven Rostedt , Masami Hiramatsu , Josh Poimboeuf Cc: Ye Liu , Michal Hocko , mic@digikod.net, oleg@redhat.com, david@kernel.org, linmiaohe@huawei.com, nao.horiguchi@gmail.com, gnoack3000@gmail.com, ljs@kernel.org, sj@kernel.org, rientjes@google.com, shakeel.butt@linux.dev, xu.xin16@zte.com.cn, chengming.zhou@linux.dev, tony.luck@intel.com, reinette.chatre@intel.com, x86@kernel.org, paul@paul-moore.com, jmorris@namei.org, serge@hallyn.com, pavel@kernel.org, lance.yang@linux.dev, pmladek@suse.com, longman@redhat.com, mathieu.desnoyers@efficios.com, jiangshanlai@gmail.com, qiang.zhang@linux.dev, dietmar.eggemann@arm.com, bsegall@google.com, mgorman@suse.de, vschneid@redhat.com, kprateek.nayak@amd.com, mark.rutland@arm.com, Dave.Martin@arm.com, james.morse@arm.com, babu.moger@amd.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, rcu@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-security-module@vger.kernel.org Subject: [PATCH v2 5/8] kernel: convert process/thread iterators to for_each_*_rculock Date: Mon, 7 Sep 2026 16:13:31 +0800 Message-Id: <20260907081334.1152889-6-ye.liu@linux.dev> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260907081334.1152889-1-ye.liu@linux.dev> References: <20260907081334.1152889-1-ye.liu@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable From: Ye Liu Replace the manual rcu_read_lock()/rcu_read_unlock() and guard(rcu) pairs combined with for_each_process(), for_each_thread() and for_each_process_thread() loops across kernel/ with the for_each_*_rculock() macros, which scope the RCU read lock to the loop body via scoped_guard(rcu). No functional change. Signed-off-by: Ye Liu Acked-by: Michal Hocko Reviewed-by: Lorenzo Stoakes (ARM) Reviewed-by: Oleg Nesterov Reviewed-by: SJ Park --- Changes in v2: - Rename *_rcu to *_rculock - Rename stale 'unlock:' label to 'out:' in hung_task.c (G=C3=BCnther Noa= ck) kernel/cpu.c | 4 +--- kernel/freezer.c | 4 +--- kernel/hung_task.c | 11 ++++------- kernel/locking/lockdep.c | 4 +--- kernel/rcu/update.c | 4 +--- kernel/sched/core.c | 3 +-- kernel/sched/debug.c | 4 +--- kernel/trace/fgraph.c | 8 ++------ kernel/unwind/deferred.c | 3 +-- 9 files changed, 13 insertions(+), 32 deletions(-) diff --git a/kernel/cpu.c b/kernel/cpu.c index b3c8553d7bd6..00638d2abc0f 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -1254,8 +1254,7 @@ void clear_tasks_mm_cpumask(int cpu) * full-fledged tasklist_lock. */ WARN_ON(cpu_online(cpu)); - rcu_read_lock(); - for_each_process(p) { + for_each_process_rculock(p) { struct task_struct *t; =20 /* @@ -1268,7 +1267,6 @@ void clear_tasks_mm_cpumask(int cpu) arch_clear_mm_cpumask_cpu(cpu, t->mm); task_unlock(t); } - rcu_read_unlock(); } =20 /* Take this CPU down. */ diff --git a/kernel/freezer.c b/kernel/freezer.c index a76bf957fb32..7a870f71dcf6 100644 --- a/kernel/freezer.c +++ b/kernel/freezer.c @@ -217,11 +217,9 @@ void thaw_process(struct task_struct *p) { struct task_struct *t; =20 - rcu_read_lock(); - for_each_thread(p, t) { + for_each_thread_rculock(p, t) { __thaw_task(t); } - rcu_read_unlock(); } =20 /** diff --git a/kernel/hung_task.c b/kernel/hung_task.c index 6fcc94ce4ca9..73a5ad3be9a8 100644 --- a/kernel/hung_task.c +++ b/kernel/hung_task.c @@ -315,13 +315,12 @@ static void check_hung_uninterruptible_tasks(unsigned= long timeout) return; =20 this_round_count =3D 0; - rcu_read_lock(); - for_each_process_thread(g, t) { + for_each_process_thread_rculock(g, t) { if (!max_count--) - goto unlock; + goto out; if (time_after(jiffies, last_break + HUNG_TASK_LOCK_BREAK)) { if (!rcu_lock_break(g, t)) - goto unlock; + goto out; last_break =3D jiffies; } =20 @@ -337,9 +336,7 @@ static void check_hung_uninterruptible_tasks(unsigned l= ong timeout) hung_task_info(t, timeout, this_round_count); } } - unlock: - rcu_read_unlock(); - +out: if (!this_round_count) return; =20 diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c index c56a7f91d72e..ea218dc75ad5 100644 --- a/kernel/locking/lockdep.c +++ b/kernel/locking/lockdep.c @@ -6834,15 +6834,13 @@ void debug_show_all_locks(void) } pr_warn("\nShowing all locks held in the system:\n"); =20 - rcu_read_lock(); - for_each_process_thread(g, p) { + for_each_process_thread_rculock(g, p) { if (!p->lockdep_depth) continue; lockdep_print_held_locks(p); touch_nmi_watchdog(); touch_all_softlockup_watchdogs(); } - rcu_read_unlock(); =20 pr_warn("\n"); pr_warn("=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n\= n"); diff --git a/kernel/rcu/update.c b/kernel/rcu/update.c index 2a778b8ab4ad..d8e0b5896db9 100644 --- a/kernel/rcu/update.c +++ b/kernel/rcu/update.c @@ -548,15 +548,13 @@ void synchronize_rcu_trivial_preempt(void) struct task_struct *t; =20 smp_mb(); // Order prior accesses before grace-period start. - rcu_read_lock(); // Protect task list. - for_each_process_thread(g, t) { + for_each_process_thread_rculock(g, t) { if (t =3D=3D current) continue; // Don't deadlock on ourselves! // Order later rcu_read_lock() on other tasks after QS. while (smp_load_acquire(&t->rcu_trivial_preempt_nesting)) continue; } - rcu_read_unlock(); } EXPORT_SYMBOL_GPL(synchronize_rcu_trivial_preempt); #endif // #if IS_ENABLED(CONFIG_TRIVIAL_PREEMPT_RCU) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 0697ed0f1c3d..fd5bdd2cb798 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2005,8 +2005,7 @@ static void uclamp_sync_util_min_rt_default(void) smp_mb__after_spinlock(); read_unlock(&tasklist_lock); =20 - guard(rcu)(); - for_each_process_thread(g, p) + for_each_process_thread_rculock(g, p) uclamp_update_util_min_rt_default(p); } =20 diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index 72236db67983..cdae165b98f7 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -1029,14 +1029,12 @@ static void print_rq(struct seq_file *m, struct rq = *rq, int rq_cpu) #endif "\n"); =20 - rcu_read_lock(); - for_each_process_thread(g, p) { + for_each_process_thread_rculock(g, p) { if (task_cpu(p) !=3D rq_cpu) continue; =20 print_task(m, rq, p); } - rcu_read_unlock(); } =20 void print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq) diff --git a/kernel/trace/fgraph.c b/kernel/trace/fgraph.c index 40d373d65f9b..f797ce119223 100644 --- a/kernel/trace/fgraph.c +++ b/kernel/trace/fgraph.c @@ -1057,11 +1057,10 @@ static int alloc_retstack_tasklist(unsigned long **= ret_stack_list) } } =20 - rcu_read_lock(); - for_each_process_thread(g, t) { + for_each_process_thread_rculock(g, t) { if (start =3D=3D end) { ret =3D -EAGAIN; - goto unlock; + goto free; } =20 if (t->ret_stack =3D=3D NULL) { @@ -1074,9 +1073,6 @@ static int alloc_retstack_tasklist(unsigned long **re= t_stack_list) t->ret_stack =3D ret_stack_list[start++]; } } - -unlock: - rcu_read_unlock(); free: for (i =3D start; i < end; i++) kmem_cache_free(fgraph_stack_cachep, ret_stack_list[i]); diff --git a/kernel/unwind/deferred.c b/kernel/unwind/deferred.c index 5bea47314254..ecfe1336095e 100644 --- a/kernel/unwind/deferred.c +++ b/kernel/unwind/deferred.c @@ -319,9 +319,8 @@ void unwind_deferred_cancel(struct unwind_work *work) =20 synchronize_srcu(&unwind_srcu); =20 - guard(rcu)(); /* Clear this bit from all threads */ - for_each_process_thread(g, t) { + for_each_process_thread_rculock(g, t) { atomic_long_andnot(BIT(bit), &t->unwind_info.unwind_mask); if (t->unwind_info.cache) --=20 2.25.1 From nobody Fri Sep 25 23:53:10 2026 Received: from mta0.migadu.com (out-119.mta0.migadu.com [91.218.175.119]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 11A42445AE7 for ; Mon, 7 Sep 2026 08:15:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.119 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788768921; cv=none; b=eE7S3L4pp+AGUAG68WeDrMHehtdmuuiPWUHbYZZuDLM8RSqSX/Mlu5/BaSL7YMBprSbmT/sdifRdoNwp99UQJoLAWpf/MHu7s5q99OY8nMlmtrVZWBhaLJJKIsn4u0BUWa6vBcamze73w6I5Lhjxd3IBQHY1xdGP8kzBkBW0Z5I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788768921; c=relaxed/simple; bh=dQwY3gP5992iA8WFv3nEtraOYZnGKkWp4+ZsJMlQB8A=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ODVt9SsQn47UZOfZiTbsv1++vi3OVL+BtE5A57SmJk/6rXy1Om7j5HtUF70WT3NbImXoYOzfQk6SmSS1HOzFdZmULeQf1E8EPUflt/Dr6dg0rmzRXna1IWRO15q28FKlGOKXly70QzdwD/hTo9CGzia/Rlmdk3BJopdzzFSu25g= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=gLPhPDDj; arc=none smtp.client-ip=91.218.175.119 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="gLPhPDDj" X-Envelope-To: linux-kernel@vger.kernel.org DKIM-Signature: a=rsa-sha256; bh=dQwY3gP5992iA8WFv3nEtraOYZnGKkWp4+ZsJMlQB8A=; c=simple/simple; d=linux.dev; h=from:to:subject:date:message-id:mime-version:content-type; s=key1; t=1788768918; v=1; x=1789373718; b=gLPhPDDj5LILH9XrPJwI6KC3TtpjjsjDRkMyRrYpv+MW3lkFBltvAzmfG2MThsTZ2jqc32DD HNkuUR5z6VW8HdLv6dSkniipkk6CpJjiVa1AYlTLgaVP9EAfFktT4eZ7ibaz+DlxJJM8xe1wzB4 6gCp5nc8r1+nRD+2ADa3HXis= X-Envelope-To: linux-kernel@vger.kernel.org Received: by smtp.migadu.com with ESMTPS id b383245cc3c82e7c; Mon, 07 Sep 2026 08:15:06 +0000 X-Mizu-Trace-ID: b383245cc3c82e7c X-Migadu-Flow: FLOW_OUT From: Ye Liu To: Tony Luck , Reinette Chatre , x86@kernel.org, Christian Brauner , Andrew Morton , Jann Horn , "Mike Rapoport (Microsoft)" , "David Hildenbrand (arm)" , Alexey Dobriyan , Lorenzo Stoakes , Oleg Nesterov Cc: Ye Liu , Michal Hocko , peterz@infradead.org, paulmck@kernel.org, mingo@redhat.com, rostedt@goodmis.org, jpoimboe@kernel.org, mic@digikod.net, tglx@kernel.org, linmiaohe@huawei.com, nao.horiguchi@gmail.com, rafael@kernel.org, gnoack3000@gmail.com, sj@kernel.org, rientjes@google.com, shakeel.butt@linux.dev, xu.xin16@zte.com.cn, chengming.zhou@linux.dev, will@kernel.org, boqun@kernel.org, frederic@kernel.org, neeraj.upadhyay@kernel.org, joelagnelf@nvidia.com, josh@joshtriplett.org, urezki@gmail.com, juri.lelli@redhat.com, vincent.guittot@linaro.org, paul@paul-moore.com, jmorris@namei.org, serge@hallyn.com, pavel@kernel.org, lance.yang@linux.dev, mhiramat@kernel.org, pmladek@suse.com, longman@redhat.com, mathieu.desnoyers@efficios.com, jiangshanlai@gmail.com, qiang.zhang@linux.dev, dietmar.eggemann@arm.com, bsegall@google.com, mgorman@suse.de, vschneid@redhat.com, kprateek.nayak@amd.com, mark.rutland@arm.com, Dave.Martin@arm.com, james.morse@arm.com, babu.moger@amd.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, rcu@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-security-module@vger.kernel.org Subject: [PATCH v2 6/8] fs: convert process/thread iterators to for_each_*_rculock Date: Mon, 7 Sep 2026 16:13:32 +0800 Message-Id: <20260907081334.1152889-7-ye.liu@linux.dev> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260907081334.1152889-1-ye.liu@linux.dev> References: <20260907081334.1152889-1-ye.liu@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ye Liu Replace the manual rcu_read_lock()/rcu_read_unlock() pairs combined with for_each_process() and for_each_process_thread() loops in fs/ with the for_each_*_rculock() macros, which scope the RCU read lock to the loop body via scoped_guard(rcu). No functional change. Signed-off-by: Ye Liu Acked-by: Michal Hocko Reviewed-by: Gregory Price (Meta) Reviewed-by: Lorenzo Stoakes (ARM) Reviewed-by: SJ Park --- Changes in v2: - Rename *_rcu to *_rculock fs/proc/base.c | 4 +--- fs/resctrl/rdtgroup.c | 8 ++------ 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/fs/proc/base.c b/fs/proc/base.c index 6a39de424f62..3de4f4557e4c 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -1160,8 +1160,7 @@ static int __set_oom_adj(struct file *file, int oom_a= dj, bool legacy) if (mm) { struct task_struct *p; =20 - rcu_read_lock(); - for_each_process(p) { + for_each_process_rculock(p) { if (same_thread_group(task, p)) continue; =20 @@ -1177,7 +1176,6 @@ static int __set_oom_adj(struct file *file, int oom_a= dj, bool legacy) } task_unlock(p); } - rcu_read_unlock(); mmdrop(mm); } err_unlock: diff --git a/fs/resctrl/rdtgroup.c b/fs/resctrl/rdtgroup.c index 5dcbb0a964e8..b14df8b23f1a 100644 --- a/fs/resctrl/rdtgroup.c +++ b/fs/resctrl/rdtgroup.c @@ -709,14 +709,12 @@ int rdtgroup_tasks_assigned(struct rdtgroup *r) =20 lockdep_assert_held(&rdtgroup_mutex); =20 - rcu_read_lock(); - for_each_process_thread(p, t) { + for_each_process_thread_rculock(p, t) { if (is_closid_match(t, r) || is_rmid_match(t, r)) { ret =3D 1; break; } } - rcu_read_unlock(); =20 return ret; } @@ -826,15 +824,13 @@ static void show_rdt_tasks(struct rdtgroup *r, struct= seq_file *s) struct task_struct *p, *t; pid_t pid; =20 - rcu_read_lock(); - for_each_process_thread(p, t) { + for_each_process_thread_rculock(p, t) { if (is_closid_match(t, r) || is_rmid_match(t, r)) { pid =3D task_pid_vnr(t); if (pid) seq_printf(s, "%d\n", pid); } } - rcu_read_unlock(); } =20 static int rdtgroup_tasks_show(struct kernfs_open_file *of, --=20 2.25.1 From nobody Fri Sep 25 23:53:10 2026 Received: from mta1.migadu.com (out-30.mta1.migadu.com [95.215.58.30]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 59827296BC8 for ; Mon, 7 Sep 2026 08:15:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.30 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788768934; cv=none; b=l72hwA0r7UvzWhaPJiZt4uBoQCJaa/Twcym5J8oyvDXIr0bLeiwM2EItBV9ujTr5nkLrHvVuba0CRDxx/QUibTnlCtXErWvzjNQtjzLSVCGQqmF5D82V5eW4ljsIhnLcWyQK56qAATETaCWKZyGFdBKJJhzTSwEUrSCsmIwFvoo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788768934; c=relaxed/simple; bh=4aeyyo7NniAcYqllECrNMdgEOmExFee2/DggJvrhUqI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=DWG5Fh+KKFl+kwyE5PQElGgE6K8ggBdw+4GZ6/k+T2ZROAYQJfWWvfMioMo9vwTNG7HH0DGYcV+YHWlqEsoW2/6E7BTVyhAKzRILSj0FHXbrwWdWZt5NI0oUYYTxsVbb92r/EtCNBISoX4vpNws7o7+h7PdXLSUufS29xGy0bXY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=WpbZB8vM; arc=none smtp.client-ip=95.215.58.30 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="WpbZB8vM" X-Envelope-To: linux-kernel@vger.kernel.org DKIM-Signature: a=rsa-sha256; bh=4aeyyo7NniAcYqllECrNMdgEOmExFee2/DggJvrhUqI=; c=simple/simple; d=linux.dev; h=from:to:subject:date:message-id:mime-version:content-type; s=key1; t=1788768930; v=1; x=1789373730; b=WpbZB8vMV1atTAj+eChqlE5a8sbZp8ATsL8FJlR45iT1eCqql9Z7vil52XF+a6WIzfcKn4gf R66TMNwf5wR7Ca9JpMJXHwOg5FmkuAqRSpAm1ZfBi61Xs31woef6EOwGW7XUH1M0pBBZKnneL8C 654rUfJqyBaPq+fNHnFytbHg= X-Envelope-To: linux-kernel@vger.kernel.org Received: by smtp.migadu.com with ESMTPS id a35385b3d24bba3f; Mon, 07 Sep 2026 08:15:28 +0000 X-Mizu-Trace-ID: a35385b3d24bba3f X-Migadu-Flow: FLOW_OUT From: Ye Liu To: Andrew Morton Cc: Ye Liu , Michal Hocko , peterz@infradead.org, paulmck@kernel.org, mingo@redhat.com, rostedt@goodmis.org, jpoimboe@kernel.org, mic@digikod.net, oleg@redhat.com, tglx@kernel.org, david@kernel.org, linmiaohe@huawei.com, nao.horiguchi@gmail.com, rafael@kernel.org, gnoack3000@gmail.com, ljs@kernel.org, sj@kernel.org, rientjes@google.com, shakeel.butt@linux.dev, xu.xin16@zte.com.cn, chengming.zhou@linux.dev, will@kernel.org, boqun@kernel.org, frederic@kernel.org, neeraj.upadhyay@kernel.org, joelagnelf@nvidia.com, josh@joshtriplett.org, urezki@gmail.com, juri.lelli@redhat.com, vincent.guittot@linaro.org, tony.luck@intel.com, reinette.chatre@intel.com, x86@kernel.org, paul@paul-moore.com, jmorris@namei.org, serge@hallyn.com, pavel@kernel.org, lance.yang@linux.dev, mhiramat@kernel.org, pmladek@suse.com, longman@redhat.com, mathieu.desnoyers@efficios.com, jiangshanlai@gmail.com, qiang.zhang@linux.dev, dietmar.eggemann@arm.com, bsegall@google.com, mgorman@suse.de, vschneid@redhat.com, kprateek.nayak@amd.com, mark.rutland@arm.com, Dave.Martin@arm.com, james.morse@arm.com, babu.moger@amd.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, rcu@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-security-module@vger.kernel.org Subject: [PATCH v2 7/8] lib: convert process iterator to for_each_process_rculock Date: Mon, 7 Sep 2026 16:13:33 +0800 Message-Id: <20260907081334.1152889-8-ye.liu@linux.dev> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260907081334.1152889-1-ye.liu@linux.dev> References: <20260907081334.1152889-1-ye.liu@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ye Liu Replace the manual rcu_read_lock()/rcu_read_unlock() pair combined with for_each_process() loop in lib/ with for_each_process_rculock(), which scopes the RCU read lock to the loop body via scoped_guard(rcu). No functional change. Signed-off-by: Ye Liu Acked-by: Michal Hocko Reviewed-by: Gregory Price (Meta) Reviewed-by: Lorenzo Stoakes (ARM) Reviewed-by: SJ Park --- Changes in v2: - Rename *_rcu to *_rculock lib/is_single_threaded.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/is_single_threaded.c b/lib/is_single_threaded.c index 8c98b20bfc41..4e7fe85454ab 100644 --- a/lib/is_single_threaded.c +++ b/lib/is_single_threaded.c @@ -26,8 +26,7 @@ bool current_is_single_threaded(void) return true; =20 ret =3D false; - rcu_read_lock(); - for_each_process(p) { + for_each_process_rculock(p) { if (unlikely(p->flags & PF_KTHREAD)) continue; if (unlikely(p =3D=3D task->group_leader)) @@ -48,7 +47,5 @@ bool current_is_single_threaded(void) } ret =3D true; found: - rcu_read_unlock(); - return ret; } --=20 2.25.1 From nobody Fri Sep 25 23:53:10 2026 Received: from mta1.migadu.com (out-54.mta1.migadu.com [95.215.58.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6F23243D4E0 for ; Mon, 7 Sep 2026 08:15:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788768946; cv=none; b=LymXTb/NXO/mFjGzI56KZJzxMjHSoef8EnIWSD1N41oDl4p/yEvbN92xAPUXPVtUJCUpvP3Qt3kpqFKsJoNHc8x/zT6qBvVanWKs1RNEYbs25jvl8UqGU3/LQHXRtFBH28KZFcElz7YY6mMMUIbwA9xJe87g2RvqH9WlAbLl6rI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788768946; c=relaxed/simple; bh=QPbA87RHE+w44sKh8YFv32hrfoolvz7WuKZeL9giD2c=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=KFUhLc3YaOn57yMVfk59d7iaVzXFu+iYoOpMt1FliB+z6KDwACdUlXOwbuCA5ALkwJudxRTlxZrPGWkQaJ6nFxs/i8oThsSWhEc9qfbSHykWFcCEGGcr03o/pNgvEaHFC3e6CSGZAzKOxwiaFF2HERLtTJiBSP1HTg79APKqC3Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=Mr/dbA1s; arc=none smtp.client-ip=95.215.58.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="Mr/dbA1s" X-Envelope-To: linux-kernel@vger.kernel.org DKIM-Signature: a=rsa-sha256; bh=QPbA87RHE+w44sKh8YFv32hrfoolvz7WuKZeL9giD2c=; c=simple/simple; d=linux.dev; h=from:to:subject:date:message-id:mime-version:content-type; s=key1; t=1788768942; v=1; x=1789373742; b=Mr/dbA1ssVgGNGSkx9NfcW/TeNr3X7ajPN5WChcRkivApREW2EP1xWiVFInVPhm1sPWsjB3w SxfFgpedO4Vr5GcEhpleqAbVMPYg4DPql6i5nm/5ONajnHrM7ZQZwILXWB5BliGboSUnHA1OFdC Jb0/0QoO2QZhUW+sgHTDxF68= X-Envelope-To: linux-kernel@vger.kernel.org Received: by smtp.migadu.com with ESMTPS id 6d517d0bf0f3bdbe; Mon, 07 Sep 2026 08:15:41 +0000 X-Mizu-Trace-ID: 6d517d0bf0f3bdbe X-Migadu-Flow: FLOW_OUT From: Ye Liu To: =?UTF-8?q?Micka=C3=ABl=20Sala=C3=BCn?= , Paul Moore , James Morris , "Serge E. Hallyn" Cc: Ye Liu , Justin Suess , =?UTF-8?q?G=C3=BCnther=20Noack?= , mhocko@suse.com, peterz@infradead.org, paulmck@kernel.org, mingo@redhat.com, rostedt@goodmis.org, jpoimboe@kernel.org, oleg@redhat.com, tglx@kernel.org, akpm@linux-foundation.org, david@kernel.org, linmiaohe@huawei.com, nao.horiguchi@gmail.com, rafael@kernel.org, ljs@kernel.org, sj@kernel.org, rientjes@google.com, shakeel.butt@linux.dev, xu.xin16@zte.com.cn, chengming.zhou@linux.dev, will@kernel.org, boqun@kernel.org, frederic@kernel.org, neeraj.upadhyay@kernel.org, joelagnelf@nvidia.com, josh@joshtriplett.org, urezki@gmail.com, juri.lelli@redhat.com, vincent.guittot@linaro.org, tony.luck@intel.com, reinette.chatre@intel.com, x86@kernel.org, pavel@kernel.org, lance.yang@linux.dev, mhiramat@kernel.org, pmladek@suse.com, longman@redhat.com, mathieu.desnoyers@efficios.com, jiangshanlai@gmail.com, qiang.zhang@linux.dev, dietmar.eggemann@arm.com, bsegall@google.com, mgorman@suse.de, vschneid@redhat.com, kprateek.nayak@amd.com, mark.rutland@arm.com, Dave.Martin@arm.com, james.morse@arm.com, babu.moger@amd.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, rcu@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-security-module@vger.kernel.org Subject: [PATCH v2 8/8] security/landlock: convert thread iterator to for_each_thread_rculock Date: Mon, 7 Sep 2026 16:13:34 +0800 Message-Id: <20260907081334.1152889-9-ye.liu@linux.dev> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260907081334.1152889-1-ye.liu@linux.dev> References: <20260907081334.1152889-1-ye.liu@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable From: Ye Liu Replace guard(rcu)() + for_each_thread() with for_each_thread_rculock(), which scopes the RCU read lock to the loop body via scoped_guard(rcu). No functional change. Signed-off-by: Ye Liu Reviewed-by: Justin Suess Reviewed-by: G=C3=BCnther Noack Reviewed-by: Gregory Price (Meta) Reviewed-by: Lorenzo Stoakes (ARM) Reviewed-by: SJ Park --- Changes in v2: - Rename *_rcu to *_rculock security/landlock/tsync.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/security/landlock/tsync.c b/security/landlock/tsync.c index 0b71e158c3f5..a578af640aad 100644 --- a/security/landlock/tsync.c +++ b/security/landlock/tsync.c @@ -335,9 +335,7 @@ static size_t count_additional_threads(const struct tsy= nc_works *works) =20 caller =3D current; =20 - guard(rcu)(); - - for_each_thread(caller, thread) { + for_each_thread_rculock(caller, thread) { /* Skip current, since it is initiating the sync. */ if (thread =3D=3D caller) continue; @@ -376,9 +374,7 @@ static bool schedule_task_work(struct tsync_works *work= s, =20 caller =3D current; =20 - guard(rcu)(); - - for_each_thread(caller, thread) { + for_each_thread_rculock(caller, thread) { /* Skip current, since it is initiating the sync. */ if (thread =3D=3D caller) continue; --=20 2.25.1