From nobody Sat Sep 26 05:27:41 2026 Received: from mta0.migadu.com (out-46.mta0.migadu.com [91.218.175.46]) (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 52E923E63AE for ; Fri, 4 Sep 2026 08:30:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788510632; cv=none; b=Mamn/U84HN+IeV6KSdr2mVmxtCqfe8uvnwzBWTOShbmbfI6m1sh0neMPnkDlTRubN/8lhp7l6YeD0UC3KOhbHcJa4zYtbzunb50Mr4MypZOEd1SLnJf7DSSEWm2XfuO0y1lZbDYERzmkgUz3+FripmYZ+2gEKoZ3107mJ8hrmr0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788510632; c=relaxed/simple; bh=qh7LUsSuMVmwYbJF65vaNykbi68YvF+qls9xkMQqeQ4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=gtDdjjfAHfvJLko9clmvLvxl+i0HCAQnF3sg3yHYf9qO0Y8OFzkDMFKAU0tl7AJquIlj7nTnEKyu7zJlqDQtVd/MUphNvNUSYVXjfqtm54LTI3rZFKVopPXFPdSjuQxYLxAOCX3Gsi0IQDoHMtIHOv4x0QxirPwE2varkC1mdSU= 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=fFOcSK9I; arc=none smtp.client-ip=91.218.175.46 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="fFOcSK9I" X-Envelope-To: linux-kernel@vger.kernel.org DKIM-Signature: a=rsa-sha256; bh=qh7LUsSuMVmwYbJF65vaNykbi68YvF+qls9xkMQqeQ4=; c=simple/simple; d=linux.dev; h=from:to:subject:date:message-id:mime-version:content-type; s=key1; t=1788510628; v=1; x=1789115428; b=fFOcSK9IgJTKi5PH4ZN93MBVPk4yV6ovCTElfsnzA217YaXfPHMZ1/AMFCkd8vCLdGfl7PYT QcPnZXJ+SZ4Lw4ID1QRzaBfMH2AbFs6voh5ks9Ix/yk0CVNV3By3GPbdRr3V3XJGMQDQOX2QW/r lommJup/zsB/Lh6jWCQsDCMU= X-Envelope-To: linux-kernel@vger.kernel.org Received: by smtp.migadu.com with ESMTPS id 3226e6f833ae81c9; Fri, 04 Sep 2026 08:30:28 +0000 X-Mizu-Trace-ID: 3226e6f833ae81c9 X-Migadu-Flow: FLOW_OUT From: Ye Liu To: "Peter Zijlstra (Intel)" , Marco Elver , Ye Liu , Yi Tao , Tejun Heo , Bart Van Assche , Christian Brauner Cc: linux-kernel@vger.kernel.org Subject: [PATCH 1/8] mm: introduce for_each_process_rcu and for_each_thread_rcu Date: Fri, 4 Sep 2026 16:29:53 +0800 Message-Id: <20260904083001.553587-2-ye.liu@linux.dev> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260904083001.553587-1-ye.liu@linux.dev> References: <20260904083001.553587-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_rcu(), for_each_thread_rcu() and for_each_process_thread_rcu() 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 --- include/linux/sched/signal.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/include/linux/sched/signal.h b/include/linux/sched/signal.h index 584ae88b435e..fe0c41dc99a1 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,24 @@ extern bool current_is_single_threaded(void); #define for_each_process_thread(p, t) \ for_each_process(p) for_each_thread(p, t) =20 +/* + * RCU-internal variants: automatically acquire and release the RCU read + * lock around the iteration. Equivalent to scoped_guard(rcu) combined + * with the respective non-_rcu variant. + */ +#define for_each_process_rcu(p) \ + scoped_guard(rcu) \ + for (p =3D &init_task ; (p =3D next_task(p)) !=3D &init_task ; ) + +#define for_each_thread_rcu(p, t) \ + scoped_guard(rcu) \ + __for_each_thread((p)->signal, t) + +/* Careful: this is a double loop, 'break' won't work as expected. */ +#define for_each_process_thread_rcu(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 Sat Sep 26 05:27:41 2026 Received: from mta0.migadu.com (out-49.mta0.migadu.com [91.218.175.49]) (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 6F87F35839C for ; Fri, 4 Sep 2026 08:30:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788510638; cv=none; b=uYpBEcEtByIOUL8BGdrdYuxLYvj8ee9umH0OP857zNyO5Ax+fV/fW+QCCsTI7hDF9N0pDrhaznKzSLFrl3mOU8b5aBMNJDK5RX3AMDgoxyLjNjZMkkWYm3Xg8m+dGVuMU7xvNC14rXwHP+kWk7oA978ctSzmwtByUtu/MIakYyY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788510638; c=relaxed/simple; bh=xI+T+eXGD7eKBa0m1TDUjuBJ5Swlbo+f7ZmwsrX8pGo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=TrCIn9uqVe1o9wEY50USsQDB+a0fE2PRHy5aPr8zNl6As4xGmqsf9fqc++nf9pPdp+oFjGmBnqhPIvKAFN0MSchB1Mj8kQpaOvccSkLXnLCtWfJX5vc297kAjYhZPPNGF+fvlb93TaK+ixkRu2oWOdzrLlXsXWdqKWf37/v21XI= 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=dr+1EDEp; arc=none smtp.client-ip=91.218.175.49 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="dr+1EDEp" X-Envelope-To: linux-kernel@vger.kernel.org DKIM-Signature: a=rsa-sha256; bh=xI+T+eXGD7eKBa0m1TDUjuBJ5Swlbo+f7ZmwsrX8pGo=; c=simple/simple; d=linux.dev; h=from:to:subject:date:message-id:mime-version:content-type; s=key1; t=1788510635; v=1; x=1789115435; b=dr+1EDEpBWgQI0VnHPTz9unjpAU77XTN+K9apqe9BZxQ54+tKGoNgqzz8xmjm3+YJsDsvkOi IePLTbSpLt5ajXlQF9eiF11taaAB6Q3tND/ZL7JX2birMlcbAUpMe+OUK/1Zw/rKJpKOT8cS7Ha RZtZAEFP2qGHxHnAfQufoFqM= X-Envelope-To: linux-kernel@vger.kernel.org Received: by smtp.migadu.com with ESMTPS id 4c1715947a22fdab; Fri, 04 Sep 2026 08:30:35 +0000 X-Mizu-Trace-ID: 4c1715947a22fdab X-Migadu-Flow: FLOW_OUT From: Ye Liu To: Michal Hocko , Andrew Morton Cc: Ye Liu , David Rientjes , Shakeel Butt , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/8] mm/oom_kill: convert process/thread iterators to for_each_*_rcu Date: Fri, 4 Sep 2026 16:29:54 +0800 Message-Id: <20260904083001.553587-3-ye.liu@linux.dev> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260904083001.553587-1-ye.liu@linux.dev> References: <20260904083001.553587-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_rcu() and for_each_thread_rcu(), so that the RCU read-side critical section is scoped to the loop body. No functional change. Signed-off-by: Ye Liu Acked-by: Michal Hocko Reviewed-by: SJ Park --- 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..8dd025965810 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_rcu(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_rcu(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_rcu(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_rcu(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_rcu(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 Sat Sep 26 05:27:41 2026 Received: from mta1.migadu.com (out-48.mta1.migadu.com [95.215.58.48]) (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 CB3383C37A2 for ; Fri, 4 Sep 2026 08:30:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788510642; cv=none; b=rRXnC1Jo9qMrmrvi4t7NhfJKE9yh9IC8Dsh7HY+5DFuC9FbX7dIVEtpEDWZQBn136x10tDUv96azyH4yjpweqvHv7ZN9iexiXeStWbYiwhxSHTTxenVA9FdoF2Gw2pcQICLkb8EhcY6K0VgidgUEHhPG9TMn8+TRXRcbi3LoBoE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788510642; c=relaxed/simple; bh=JamvyTb3oE6oY9RFFl9Xgqmjsm7Tu8R7P/y1cNok9Qc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=HI0QQYyLIHVZWqaZQTOvx0hv8qS71piDqsjvcHyOmIOQXL8UEFmrGmGQkhrWtG030NU1K58cWn3rYNoSjvVpz7gDseNDEEyJVVi3WzvuYCZbCPUlWniB0NUfnWw6frYAL/ZGYE/+Sf1usdfA7umLVwqoWMTsb+HNQ8Q+HbABMaw= 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=SsjtsYTS; arc=none smtp.client-ip=95.215.58.48 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="SsjtsYTS" X-Envelope-To: linux-kernel@vger.kernel.org DKIM-Signature: a=rsa-sha256; bh=JamvyTb3oE6oY9RFFl9Xgqmjsm7Tu8R7P/y1cNok9Qc=; c=simple/simple; d=linux.dev; h=from:to:subject:date:message-id:mime-version:content-type; s=key1; t=1788510638; v=1; x=1789115438; b=SsjtsYTSVR5JEdUoweSC86iS4Oj6ynzXNNii7sFtAurZ3kW+vyytR3HWqB2May7cjfE/lRMB V1JTKNLve9p2WDhbFwSq/4tIseLOXzO34DHBNAtjVbXT0VJXNS32auLyvF8XVqTXQkbFSO615h9 iPynoU9GbI3y/03p4SPktRGU= X-Envelope-To: linux-kernel@vger.kernel.org Received: by smtp.migadu.com with ESMTPS id eb80e7cdd3dd87ca; Fri, 04 Sep 2026 08:30:38 +0000 X-Mizu-Trace-ID: eb80e7cdd3dd87ca X-Migadu-Flow: FLOW_OUT From: Ye Liu To: Andrew Morton , David Hildenbrand Cc: Ye Liu , Xu Xin , Chengming Zhou , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/8] mm/ksm: convert process iterator to for_each_process_rcu Date: Fri, 4 Sep 2026 16:29:55 +0800 Message-Id: <20260904083001.553587-4-ye.liu@linux.dev> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260904083001.553587-1-ye.liu@linux.dev> References: <20260904083001.553587-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_rcu(). No functional change. Signed-off-by: Ye Liu Acked-by: Michal Hocko Reviewed-by: SJ Park --- mm/ksm.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mm/ksm.c b/mm/ksm.c index 49d48d1e0998..fa5e4c47fb1b 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_rcu(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 Sat Sep 26 05:27:41 2026 Received: from mta1.migadu.com (out-52.mta1.migadu.com [95.215.58.52]) (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 EB14E3E9C2F for ; Fri, 4 Sep 2026 08:30:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788510645; cv=none; b=EXluMqF2mkCRnOaCLluB1iZB+o8B980zqQdzhmp5BUf9wQHjvkJPynileZA8zMa0CTbLXfX9+Rfd7FN0eWuLswIx2ON4oS0ZOo34Ca4X4PnSyv0lkYPm7imkiNhXIKF44PjoP9YhZASe2lrE6PsVBAMVwQ9Ctm0eRN0+HXCUHjM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788510645; c=relaxed/simple; bh=CFKM/oXZIBvw0BqE9/5yiGP7kLeCWI/z9w+COmstMmA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=B8FPOrZdsweDmj2fJwAwWMNepVKE+x6JcgTaD87ZPhRsb+Cy9a54cM9vdYVSuFtUgBsosLnDuW1LF4ZpA2RvYiSl9RVCYBkDBh1ppF5hlJ8eThlqfR7WAsuM45ICJH3PNsP2kaYf36fNxAodGAn2HTzTE2npKMXjyfWHagCHC+I= 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=Y6etWUM1; arc=none smtp.client-ip=95.215.58.52 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="Y6etWUM1" X-Envelope-To: linux-kernel@vger.kernel.org DKIM-Signature: a=rsa-sha256; bh=CFKM/oXZIBvw0BqE9/5yiGP7kLeCWI/z9w+COmstMmA=; c=simple/simple; d=linux.dev; h=from:to:subject:date:message-id:mime-version:content-type; s=key1; t=1788510641; v=1; x=1789115441; b=Y6etWUM1RMTIvN2P7dw85Fry5LCC8U/8IwkjsGKpzZQZ7T/bJLz9a9/zCvGZYb+OTdKWdVgf voYRKhnzo7SqYxeWTyHQYfoCRO4CrvSdP6BxvWFyKzg4YnnlP41WXvyQcRPO7KpwsWcopcZ09ej HKw1kKmkJa+Ll46FKmaK+SqY= X-Envelope-To: linux-kernel@vger.kernel.org Received: by smtp.migadu.com with ESMTPS id 4ff74a31b6f5cb41; Fri, 04 Sep 2026 08:30:41 +0000 X-Mizu-Trace-ID: 4ff74a31b6f5cb41 X-Migadu-Flow: FLOW_OUT From: Ye Liu To: Miaohe Lin , Andrew Morton Cc: Ye Liu , Naoya Horiguchi , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 4/8] mm/memory-failure: convert process iterator to for_each_process_rcu Date: Fri, 4 Sep 2026 16:29:56 +0800 Message-Id: <20260904083001.553587-5-ye.liu@linux.dev> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260904083001.553587-1-ye.liu@linux.dev> References: <20260904083001.553587-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_rcu(). No functional change. Signed-off-by: Ye Liu Acked-by: Miaohe Lin Acked-by: Michal Hocko --- 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..63a2ff08ee33 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_rcu(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_rcu(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_rcu(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_rcu(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 Sat Sep 26 05:27:41 2026 Received: from mta0.migadu.com (out-72.mta0.migadu.com [91.218.175.72]) (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 E52663E5A17 for ; Fri, 4 Sep 2026 08:30:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.72 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788510657; cv=none; b=NDMiPHM6hq2E5gFvfUxClcecFTQ2U5v9uj/q7DTTzgD/PB7LfDVcZ7Ih4a+C0nPqBM8ClZe6s3c9FLACN6p+Je3QyZc2cQ8CsToSXZk43kgmLt/pTVRwJUbTaEEQGv/u/O6raGo66wI+etr0ArI23ZY+yMwj4EGYdoRw0GHvEZM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788510657; c=relaxed/simple; bh=Xdvx2Irb+Gsb4geE+bHqC5XEtHWE1pIygMMtMXvfW5U=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=sZ7PzSf+LhdmlpazfH1hyQkaUNixSZCuGT3XFJelAowJrDuHjcSD9EsoCqLrBub3hx6AM30h7rnEKJ4LWIzKdfKq9gRh+XRAeXme8OeOg3Hpl0bKGSkTSTC8D1jpPHAOkN1wmkCUDyZNm0OkdViJtzkh0WOUtInxR8U06KsjiJQ= 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=TxPiXNfQ; arc=none smtp.client-ip=91.218.175.72 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="TxPiXNfQ" X-Envelope-To: linux-kernel@vger.kernel.org DKIM-Signature: a=rsa-sha256; bh=Xdvx2Irb+Gsb4geE+bHqC5XEtHWE1pIygMMtMXvfW5U=; c=simple/simple; d=linux.dev; h=from:to:subject:date:message-id:mime-version:content-type; s=key1; t=1788510653; v=1; x=1789115453; b=TxPiXNfQbb+rrsZcs5+Z2cURhWExczwoUfE4ju8SYtvJvIRAX4cpJow4ku6fWYedYwvgmHdL pbeVX4eBiJBV2+eRij+sAuS20qeK7jr3kOG+/iUSBGOvI2m3VZlHQ5K2JexZrE2x+amVXdABoFy kvc8HlOQdB7kwVbX5hwYuQpo= X-Envelope-To: linux-kernel@vger.kernel.org Received: by smtp.migadu.com with ESMTPS id d7ceea79dbc23d11; Fri, 04 Sep 2026 08:30:53 +0000 X-Mizu-Trace-ID: d7ceea79dbc23d11 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 , Pavel Machek , Lance Yang , Petr Mladek , Waiman Long , Mathieu Desnoyers , Lai Jiangshan , Zqiang , Dietmar Eggemann , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak , Mark Rutland , linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, rcu@vger.kernel.org, linux-trace-kernel@vger.kernel.org Subject: [PATCH 5/8] kernel: convert process/thread iterators to for_each_*_rcu Date: Fri, 4 Sep 2026 16:29:57 +0800 Message-Id: <20260904083001.553587-6-ye.liu@linux.dev> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260904083001.553587-1-ye.liu@linux.dev> References: <20260904083001.553587-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() and guard(rcu) pairs combined with for_each_process(), for_each_thread() and for_each_process_thread() loops across kernel/ with the for_each_*_rcu() macros. No functional change. Signed-off-by: Ye Liu Acked-by: Michal Hocko --- kernel/cpu.c | 4 +--- kernel/freezer.c | 4 +--- kernel/hung_task.c | 7 ++----- 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, 11 insertions(+), 30 deletions(-) diff --git a/kernel/cpu.c b/kernel/cpu.c index b3c8553d7bd6..bc70fd21561a 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_rcu(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..a27b2382fda9 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_rcu(p, t) { __thaw_task(t); } - rcu_read_unlock(); } =20 /** diff --git a/kernel/hung_task.c b/kernel/hung_task.c index 6fcc94ce4ca9..76871f78497f 100644 --- a/kernel/hung_task.c +++ b/kernel/hung_task.c @@ -315,8 +315,7 @@ static void check_hung_uninterruptible_tasks(unsigned l= ong timeout) return; =20 this_round_count =3D 0; - rcu_read_lock(); - for_each_process_thread(g, t) { + for_each_process_thread_rcu(g, t) { if (!max_count--) goto unlock; if (time_after(jiffies, last_break + HUNG_TASK_LOCK_BREAK)) { @@ -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(); - +unlock: if (!this_round_count) return; =20 diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c index c56a7f91d72e..9c3dce0f0c4b 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_rcu(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..c48a84a0da82 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_rcu(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..a41cdd2ff02f 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_rcu(g, p) uclamp_update_util_min_rt_default(p); } =20 diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index 72236db67983..8f37b1a7adfe 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_rcu(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..e522433ec8a5 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_rcu(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..61fe2d4727ce 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_rcu(g, t) { atomic_long_andnot(BIT(bit), &t->unwind_info.unwind_mask); if (t->unwind_info.cache) --=20 2.25.1 From nobody Sat Sep 26 05:27:41 2026 Received: from mta0.migadu.com (out-85.mta0.migadu.com [91.218.175.85]) (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 007873ECBE3 for ; Fri, 4 Sep 2026 08:31:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.85 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788510662; cv=none; b=XJF0oa/eK9NWadYll/vWSl97d/ELTGlGlom+4xK2LF/x2qmliYDQgYDijIUa9ssd919Av3kI/lyJ6PRCdgf51oqpiYmzmySJunuMVXRhzADFNgCRkxGEYhl49Vo6fWu+8v4DFLuz84aKPlLjtLsKjbIpQmAnX/y4olg99pTi8Ew= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788510662; c=relaxed/simple; bh=zNZNbxef7ai/LHUf0K6ynGA+nqcp5AyWnJqAIFdVGFU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=eaVGe5nJONpaUWo+YjLmUdiphrKXjMpCsRvbp4n5yh0nZI6luD89h9NyeogBCpLLyl+TKX/gL8IERIw4MUQWXjraalctj4S9dvGMyJn/oX65tkLdigxc7+reg99MTKramL1qFrHivWF8bK5u9Vf5Tjt+flMqwiS+UUWd3zgR4SE= 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=K52Eg0un; arc=none smtp.client-ip=91.218.175.85 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="K52Eg0un" X-Envelope-To: linux-kernel@vger.kernel.org DKIM-Signature: a=rsa-sha256; bh=zNZNbxef7ai/LHUf0K6ynGA+nqcp5AyWnJqAIFdVGFU=; c=simple/simple; d=linux.dev; h=from:to:subject:date:message-id:mime-version:content-type; s=key1; t=1788510658; v=1; x=1789115458; b=K52Eg0unEuxAhK4JUB7s+FYXT8BjSptu6SKaIqTsfBAKzGQwLUJPS5a6JL4+bFJ+oMYxVtZG no0b6KcfYILOWrmfKHmfSu4J9Ps6bEr+4xPVvJUvTQykE3gE8rKcy4gqSVp0CrPybie3Lymo7wx /mu7bBDwiJY45ZDp65UgxM00= X-Envelope-To: linux-kernel@vger.kernel.org Received: by smtp.migadu.com with ESMTPS id f9c1eba717240c49; Fri, 04 Sep 2026 08:30:58 +0000 X-Mizu-Trace-ID: f9c1eba717240c49 X-Migadu-Flow: FLOW_OUT From: Ye Liu To: Tony Luck , Reinette Chatre , x86@kernel.org, Christian Brauner , Andrew Morton , Jann Horn , "David Hildenbrand (arm)" , "Mike Rapoport (Microsoft)" , Alexey Dobriyan , Lorenzo Stoakes , Oleg Nesterov Cc: Ye Liu , Dave Martin , James Morse , Babu Moger , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: [PATCH 6/8] fs: convert process/thread iterators to for_each_*_rcu Date: Fri, 4 Sep 2026 16:29:58 +0800 Message-Id: <20260904083001.553587-7-ye.liu@linux.dev> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260904083001.553587-1-ye.liu@linux.dev> References: <20260904083001.553587-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_*_rcu() macros. No functional change. Signed-off-by: Ye Liu Acked-by: Michal Hocko --- 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..da36ba73dc17 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_rcu(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..3f96d21b84ab 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_rcu(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_rcu(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 Sat Sep 26 05:27:41 2026 Received: from mta0.migadu.com (out-85.mta0.migadu.com [91.218.175.85]) (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 267F93EF0AA for ; Fri, 4 Sep 2026 08:31:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.85 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788510666; cv=none; b=bItOvNS0LKDdMHV3sokq2VlR58fXBpqcrNGqdh5LvS09zq1Xd8wYFxyhWA4zwgQeVUhuegiD3yIdY9btH3CQJAli8FXYMuCYXMgU8uDm5YLNuWt1KsHT96E7HLxpjSHIRD6oxAmt4FIpCSwUrdUEIJIfjR07eImHIrpRGDn+zJw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788510666; c=relaxed/simple; bh=j1M+jh7rCRP1fmPGlKazdBrF1jppzbTuGoNzeUt018s=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=aiX00WPGZvCbOQgGgWD5hhXGvRTcJAjj7KUCrV0lNIgdP9Y1z5evS62a92v7g85VMMtlJMrq4lMs8Y7rDun99X+Zl+9VM6dKf+3jWmvvS42LWfozrJBfFgGo4ymdLgoBAgkOEOVjWx1EQyu9Ac/L9+BOo8pZsiUv7Z2+4Mxq+DM= 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=t0iaE2xE; arc=none smtp.client-ip=91.218.175.85 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="t0iaE2xE" X-Envelope-To: linux-kernel@vger.kernel.org DKIM-Signature: a=rsa-sha256; bh=j1M+jh7rCRP1fmPGlKazdBrF1jppzbTuGoNzeUt018s=; c=simple/simple; d=linux.dev; h=from:to:subject:date:message-id:mime-version:content-type; s=key1; t=1788510664; v=1; x=1789115464; b=t0iaE2xEuOESyBHatvMQYyoCqGaz3OkBKrJ2Sth3LrDkVppIJgshtPtThUG09adUGphD0+8k VOHWv5EuC68lwhue5e1e29H3oczZA/y64TSFT+4wRUru/fBz/3m2a8iD9ifVGkDon6oUOsnGFJS V3ESwT4asMlz0/LsVWcoUe1w= X-Envelope-To: linux-kernel@vger.kernel.org Received: by smtp.migadu.com with ESMTPS id 56984b57f42ec0be; Fri, 04 Sep 2026 08:31:04 +0000 X-Mizu-Trace-ID: 56984b57f42ec0be X-Migadu-Flow: FLOW_OUT From: Ye Liu To: Andrew Morton Cc: Ye Liu , linux-kernel@vger.kernel.org Subject: [PATCH 7/8] lib: convert process iterator to for_each_process_rcu Date: Fri, 4 Sep 2026 16:29:59 +0800 Message-Id: <20260904083001.553587-8-ye.liu@linux.dev> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260904083001.553587-1-ye.liu@linux.dev> References: <20260904083001.553587-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_rcu(). No functional change. Signed-off-by: Ye Liu Acked-by: Michal Hocko --- 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..0682dc87bcdf 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_rcu(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 Sat Sep 26 05:27:41 2026 Received: from mta0.migadu.com (out-92.mta0.migadu.com [91.218.175.92]) (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 D3D62175A9D for ; Fri, 4 Sep 2026 08:31:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.92 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788510674; cv=none; b=MsNLT1JvAQeeT5atkc1gNdCt4xxIwIjccZu/PfQbeXVBQaQEo7LGu6uz93ZXyFoT7wB/YAoY1XXBl8a0OTtj/n64dI431X9eoIcMX29kq+KWTgV0iXktFLZhUrPSImycpQkVIwMOjbWNmTrty2dCn/ssEbQM9vzUTOPL4P2myds= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788510674; c=relaxed/simple; bh=+SXmtKc9SrYxbBPOvsPXeXvF9U/YMgEAJNrujcS+q+c=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=duZj+MNaWJBbcwcNYu1zf+Rir7hRsQLINONwwcAqzdyunxPUgUD4oJBIF1e31+fuYU60x6G4ClyFI2IpSn4lJdKp7jKD4/txW4WqHFmYFXFsKqdMWc+BzSen7xZzBCCTGUvhRMcdX8HPjQZ3L1Jqs1fd9ZYcKk9JX+rzrrhlVyI= 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=kGf5WZHo; arc=none smtp.client-ip=91.218.175.92 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="kGf5WZHo" X-Envelope-To: linux-kernel@vger.kernel.org DKIM-Signature: a=rsa-sha256; bh=+SXmtKc9SrYxbBPOvsPXeXvF9U/YMgEAJNrujcS+q+c=; c=simple/simple; d=linux.dev; h=from:to:subject:date:message-id:mime-version:content-type; s=key1; t=1788510670; v=1; x=1789115470; b=kGf5WZHosNuan7P+prM6GrhJbzFxmetqPMJPR4vOaZROimZ9wgCSKckRGzr1y5KGpuYR3WXk gXRVsksx/Uu36M5mbsTx9YIefYjgGEEk9p02e0eB4IAeMM23sHY7hezvTXGhT+TUdydxo+i0iGn rRApQe0iDi9vZgvorZAuqusQ= X-Envelope-To: linux-kernel@vger.kernel.org Received: by smtp.migadu.com with ESMTPS id f1edcafb530ef41a; Fri, 04 Sep 2026 08:31:10 +0000 X-Mizu-Trace-ID: f1edcafb530ef41a 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 , =?UTF-8?q?G=C3=BCnther=20Noack?= , linux-security-module@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 8/8] security/landlock: convert thread iterator to for_each_thread_rcu Date: Fri, 4 Sep 2026 16:30:00 +0800 Message-Id: <20260904083001.553587-9-ye.liu@linux.dev> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260904083001.553587-1-ye.liu@linux.dev> References: <20260904083001.553587-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 guard(rcu)() + for_each_thread() with for_each_thread_rcu(), so that the RCU read-side critical section is scoped to the loop body. No functional change. Signed-off-by: Ye Liu Reviewed-by: G=C3=BCnther Noack Reviewed-by: Justin Suess --- 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..f1c08aae179b 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_rcu(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_rcu(caller, thread) { /* Skip current, since it is initiating the sync. */ if (thread =3D=3D caller) continue; --=20 2.25.1