From: Harry Yoo via Linux-f2fs-devel <linux-f2fs-devel@lists.sourceforge.net>
To: Catalin Marinas <catalin.marinas@arm.com>
Cc: Qing Wang <wangqing7171@gmail.com>,
"Vlastimil Babka \(SUSE\)" <vbabka@kernel.org>,
lorenzo.stoakes@oracle.com, jannh@google.com,
Hao Li <hao.li@linux.dev>,
syzkaller-bugs@googlegroups.com, linux-kernel@vger.kernel.org,
Liam.Howlett@oracle.com,
syzbot+cae7809e9dc1459e4e63@syzkaller.appspotmail.com,
linux-mm@kvack.org, sj1557.seo@samsung.com, pfalcato@suse.de,
linux-fsdevel@vger.kernel.org, jaegeuk@kernel.org,
akpm@linux-foundation.org,
linux-f2fs-devel@lists.sourceforge.net, linkinjeon@kernel.org,
vbabka@suse.cz
Subject: Re: [f2fs-dev] [syzbot] [mm?] [f2fs?] [exfat?] memory leak in __kfree_rcu_sheaf
Date: Tue, 10 Mar 2026 12:39:54 +0900 [thread overview]
Message-ID: <aa-SinLe2jrtO1pS@hyeyoo> (raw)
In-Reply-To: <aassZV5PjgFx8dSI@arm.com>
#syz test
diff --git a/mm/slab_common.c b/mm/slab_common.c
index d5a70a831a2a..73f4668d870d 100644
--- a/mm/slab_common.c
+++ b/mm/slab_common.c
@@ -1954,8 +1954,14 @@ void kvfree_call_rcu(struct rcu_head *head, void *ptr)
if (!head)
might_sleep();
- if (!IS_ENABLED(CONFIG_PREEMPT_RT) && kfree_rcu_sheaf(ptr))
+ if (!IS_ENABLED(CONFIG_PREEMPT_RT) && kfree_rcu_sheaf(ptr)) {
+ /*
+ * The object is now queued for deferred freeing via an RCU
+ * sheaf. Tell kmemleak to ignore it.
+ */
+ kmemleak_ignore(ptr);
return;
+ }
// Queue the object but don't yet schedule the batch.
if (debug_rcu_head_queue(ptr)) {
diff --git a/mm/slub.c b/mm/slub.c
index 20cb4f3b636d..36f613f48bd0 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -3014,8 +3014,10 @@ static void pcs_flush_all(struct kmem_cache *s)
free_empty_sheaf(s, spare);
}
- if (rcu_free)
+ if (rcu_free) {
+ kmemleak_ignore(rcu_free);
call_rcu(&rcu_free->rcu_head, rcu_free_sheaf_nobarn);
+ }
sheaf_flush_main(s);
}
@@ -3035,6 +3037,7 @@ static void __pcs_flush_all_cpu(struct kmem_cache *s, unsigned int cpu)
}
if (pcs->rcu_free) {
+ kmemleak_ignore(pcs->rcu_free);
call_rcu(&pcs->rcu_free->rcu_head, rcu_free_sheaf_nobarn);
pcs->rcu_free = NULL;
}
@@ -4031,8 +4034,10 @@ static void flush_rcu_sheaf(struct work_struct *w)
local_unlock(&s->cpu_sheaves->lock);
- if (rcu_free)
+ if (rcu_free) {
+ kmemleak_ignore(rcu_free);
call_rcu(&rcu_free->rcu_head, rcu_free_sheaf_nobarn);
+ }
}
@@ -5948,8 +5953,15 @@ bool __kfree_rcu_sheaf(struct kmem_cache *s, void *obj)
* we flush before local_unlock to make sure a racing
* flush_all_rcu_sheaves() doesn't miss this sheaf
*/
- if (rcu_sheaf)
+ if (rcu_sheaf) {
+ /*
+ * TODO: Ideally this should be undone in rcu_free_sheaf,
+ * when the sheaf is returned to a barn to avoid generating
+ * false negatives.
+ */
+ kmemleak_ignore(rcu_sheaf);
call_rcu(&rcu_sheaf->rcu_head, rcu_free_sheaf);
+ }
local_unlock(&s->cpu_sheaves->lock);
@@ -7538,6 +7550,7 @@ static void early_kmem_cache_node_alloc(int node)
slab->freelist = get_freepointer(kmem_cache_node, n);
slab->inuse = 1;
kmem_cache_node->node[node] = n;
+ kmemleak_alloc(n, sizeof(*n), 1, GFP_NOWAIT);
init_kmem_cache_node(n, NULL);
inc_slabs_node(kmem_cache_node, node, slab->objects);
base-commit: c23719abc3308df7ed3ad35650ad211fb2d2003d
--
2.43.0
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
WARNING: multiple messages have this Message-ID (diff)
From: Harry Yoo <harry.yoo@oracle.com>
To: Catalin Marinas <catalin.marinas@arm.com>
Cc: "Vlastimil Babka (SUSE)" <vbabka@kernel.org>,
Qing Wang <wangqing7171@gmail.com>,
syzbot+cae7809e9dc1459e4e63@syzkaller.appspotmail.com,
Liam.Howlett@oracle.com, akpm@linux-foundation.org,
chao@kernel.org, jaegeuk@kernel.org, jannh@google.com,
linkinjeon@kernel.org, linux-f2fs-devel@lists.sourceforge.net,
linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-mm@kvack.org, lorenzo.stoakes@oracle.com, pfalcato@suse.de,
sj1557.seo@samsung.com, syzkaller-bugs@googlegroups.com,
vbabka@suse.cz, Hao Li <hao.li@linux.dev>
Subject: Re: [syzbot] [mm?] [f2fs?] [exfat?] memory leak in __kfree_rcu_sheaf
Date: Tue, 10 Mar 2026 12:39:54 +0900 [thread overview]
Message-ID: <aa-SinLe2jrtO1pS@hyeyoo> (raw)
In-Reply-To: <aassZV5PjgFx8dSI@arm.com>
#syz test
diff --git a/mm/slab_common.c b/mm/slab_common.c
index d5a70a831a2a..73f4668d870d 100644
--- a/mm/slab_common.c
+++ b/mm/slab_common.c
@@ -1954,8 +1954,14 @@ void kvfree_call_rcu(struct rcu_head *head, void *ptr)
if (!head)
might_sleep();
- if (!IS_ENABLED(CONFIG_PREEMPT_RT) && kfree_rcu_sheaf(ptr))
+ if (!IS_ENABLED(CONFIG_PREEMPT_RT) && kfree_rcu_sheaf(ptr)) {
+ /*
+ * The object is now queued for deferred freeing via an RCU
+ * sheaf. Tell kmemleak to ignore it.
+ */
+ kmemleak_ignore(ptr);
return;
+ }
// Queue the object but don't yet schedule the batch.
if (debug_rcu_head_queue(ptr)) {
diff --git a/mm/slub.c b/mm/slub.c
index 20cb4f3b636d..36f613f48bd0 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -3014,8 +3014,10 @@ static void pcs_flush_all(struct kmem_cache *s)
free_empty_sheaf(s, spare);
}
- if (rcu_free)
+ if (rcu_free) {
+ kmemleak_ignore(rcu_free);
call_rcu(&rcu_free->rcu_head, rcu_free_sheaf_nobarn);
+ }
sheaf_flush_main(s);
}
@@ -3035,6 +3037,7 @@ static void __pcs_flush_all_cpu(struct kmem_cache *s, unsigned int cpu)
}
if (pcs->rcu_free) {
+ kmemleak_ignore(pcs->rcu_free);
call_rcu(&pcs->rcu_free->rcu_head, rcu_free_sheaf_nobarn);
pcs->rcu_free = NULL;
}
@@ -4031,8 +4034,10 @@ static void flush_rcu_sheaf(struct work_struct *w)
local_unlock(&s->cpu_sheaves->lock);
- if (rcu_free)
+ if (rcu_free) {
+ kmemleak_ignore(rcu_free);
call_rcu(&rcu_free->rcu_head, rcu_free_sheaf_nobarn);
+ }
}
@@ -5948,8 +5953,15 @@ bool __kfree_rcu_sheaf(struct kmem_cache *s, void *obj)
* we flush before local_unlock to make sure a racing
* flush_all_rcu_sheaves() doesn't miss this sheaf
*/
- if (rcu_sheaf)
+ if (rcu_sheaf) {
+ /*
+ * TODO: Ideally this should be undone in rcu_free_sheaf,
+ * when the sheaf is returned to a barn to avoid generating
+ * false negatives.
+ */
+ kmemleak_ignore(rcu_sheaf);
call_rcu(&rcu_sheaf->rcu_head, rcu_free_sheaf);
+ }
local_unlock(&s->cpu_sheaves->lock);
@@ -7538,6 +7550,7 @@ static void early_kmem_cache_node_alloc(int node)
slab->freelist = get_freepointer(kmem_cache_node, n);
slab->inuse = 1;
kmem_cache_node->node[node] = n;
+ kmemleak_alloc(n, sizeof(*n), 1, GFP_NOWAIT);
init_kmem_cache_node(n, NULL);
inc_slabs_node(kmem_cache_node, node, slab->objects);
base-commit: c23719abc3308df7ed3ad35650ad211fb2d2003d
--
2.43.0
next prev parent reply other threads:[~2026-03-10 3:40 UTC|newest]
Thread overview: 85+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-09 18:26 [f2fs-dev] [syzbot] [mm?] [f2fs?] [exfat?] memory leak in __kfree_rcu_sheaf syzbot
2026-02-09 18:26 ` syzbot
2026-03-02 3:41 ` [f2fs-dev] " Qing Wang
2026-03-02 3:41 ` Qing Wang
2026-03-02 3:57 ` [f2fs-dev] " syzbot
2026-03-02 3:57 ` syzbot
2026-03-02 8:39 ` [f2fs-dev] " Vlastimil Babka (SUSE) via Linux-f2fs-devel
2026-03-02 8:39 ` Vlastimil Babka (SUSE)
2026-03-04 1:30 ` [f2fs-dev] " Harry Yoo via Linux-f2fs-devel
2026-03-04 1:30 ` Harry Yoo
2026-03-04 13:39 ` [f2fs-dev] " Vlastimil Babka (SUSE) via Linux-f2fs-devel
2026-03-04 13:39 ` Vlastimil Babka (SUSE)
2026-03-06 19:35 ` [f2fs-dev] " Catalin Marinas
2026-03-06 19:35 ` Catalin Marinas
2026-03-08 11:02 ` [f2fs-dev] " Catalin Marinas
2026-03-08 11:02 ` Catalin Marinas
2026-03-08 12:31 ` [f2fs-dev] " syzbot
2026-03-08 12:31 ` syzbot
2026-03-08 11:04 ` [f2fs-dev] " Catalin Marinas
2026-03-08 11:04 ` Catalin Marinas
2026-03-08 12:42 ` [f2fs-dev] " syzbot
2026-03-08 12:42 ` syzbot
2026-03-09 10:46 ` [f2fs-dev] " Harry Yoo via Linux-f2fs-devel
2026-03-09 10:46 ` Harry Yoo
2026-03-09 11:11 ` [f2fs-dev] " syzbot
2026-03-09 11:11 ` syzbot
2026-03-09 12:17 ` [f2fs-dev] " Harry Yoo via Linux-f2fs-devel
2026-03-09 12:17 ` Harry Yoo
2026-03-09 20:31 ` [f2fs-dev] " Catalin Marinas
2026-03-09 20:31 ` Catalin Marinas
2026-03-11 3:04 ` [f2fs-dev] " Harry Yoo via Linux-f2fs-devel
2026-03-11 3:04 ` Harry Yoo
2026-03-11 3:20 ` [f2fs-dev] " Harry Yoo via Linux-f2fs-devel
2026-03-11 3:20 ` Harry Yoo
2026-03-10 3:39 ` Harry Yoo via Linux-f2fs-devel [this message]
2026-03-10 3:39 ` Harry Yoo
2026-03-10 3:54 ` [f2fs-dev] " syzbot
2026-03-10 3:54 ` syzbot
2026-03-10 6:11 ` [f2fs-dev] " Harry Yoo via Linux-f2fs-devel
2026-03-10 6:11 ` Harry Yoo
2026-03-10 6:29 ` [f2fs-dev] " syzbot
2026-03-10 6:29 ` syzbot
2026-03-10 8:10 ` [f2fs-dev] " Harry Yoo via Linux-f2fs-devel
2026-03-10 8:10 ` Harry Yoo
2026-03-10 9:40 ` [f2fs-dev] " syzbot
2026-03-10 9:40 ` syzbot
2026-03-18 2:34 ` [f2fs-dev] " Harry Yoo via Linux-f2fs-devel
2026-03-18 2:34 ` Harry Yoo
2026-03-18 3:08 ` [f2fs-dev] " syzbot
2026-03-18 3:08 ` syzbot
2026-03-18 4:10 ` [f2fs-dev] " Harry Yoo via Linux-f2fs-devel
2026-03-18 4:10 ` Harry Yoo
2026-03-18 5:02 ` [f2fs-dev] " syzbot
2026-03-18 5:02 ` syzbot
2026-03-11 9:57 ` [f2fs-dev] " Qing Wang
2026-03-11 9:57 ` Qing Wang
2026-03-11 10:17 ` [f2fs-dev] " syzbot
2026-03-11 10:17 ` syzbot
2026-03-11 10:48 ` [f2fs-dev] " Qing Wang
2026-03-11 10:48 ` Qing Wang
2026-03-11 11:03 ` [f2fs-dev] " syzbot
2026-03-11 11:03 ` syzbot
2026-03-11 11:23 ` [f2fs-dev] " Harry Yoo via Linux-f2fs-devel
2026-03-11 11:23 ` Harry Yoo
2026-03-20 0:06 ` [f2fs-dev] " Harry Yoo via Linux-f2fs-devel
2026-03-20 0:06 ` Harry Yoo
2026-03-20 10:34 ` [f2fs-dev] " syzbot
2026-03-20 10:34 ` syzbot
2026-03-20 11:20 ` [f2fs-dev] " Harry Yoo via Linux-f2fs-devel
2026-03-20 11:20 ` Harry Yoo
2026-05-02 10:09 ` David Timber
2026-05-03 6:00 ` David Timber
2026-05-03 7:17 ` [f2fs-dev] [syzbot] [mm?] [exfat?] [f2fs?] " syzbot
2026-05-03 7:17 ` syzbot
2026-05-03 6:05 ` [syzbot] [mm?] [f2fs?] [exfat?] " David Timber
2026-05-03 7:27 ` [f2fs-dev] [syzbot] [mm?] [exfat?] [f2fs?] " syzbot
2026-05-03 7:27 ` syzbot
2026-05-03 7:41 ` [f2fs-dev] " David Timber via Linux-f2fs-devel
2026-05-03 7:41 ` David Timber
2026-05-04 20:17 ` [syzbot] [mm?] [f2fs?] [exfat?] " David Timber
2026-05-04 20:51 ` [f2fs-dev] [syzbot] [mm?] [exfat?] [f2fs?] " syzbot
2026-05-04 20:51 ` syzbot
2026-05-04 20:26 ` [syzbot] [mm?] [f2fs?] [exfat?] " David Timber
2026-05-04 21:12 ` [f2fs-dev] [syzbot] [mm?] [exfat?] [f2fs?] " syzbot
2026-05-04 21:12 ` syzbot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aa-SinLe2jrtO1pS@hyeyoo \
--to=linux-f2fs-devel@lists.sourceforge.net \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=catalin.marinas@arm.com \
--cc=hao.li@linux.dev \
--cc=harry.yoo@oracle.com \
--cc=jaegeuk@kernel.org \
--cc=jannh@google.com \
--cc=linkinjeon@kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=pfalcato@suse.de \
--cc=sj1557.seo@samsung.com \
--cc=syzbot+cae7809e9dc1459e4e63@syzkaller.appspotmail.com \
--cc=syzkaller-bugs@googlegroups.com \
--cc=vbabka@kernel.org \
--cc=vbabka@suse.cz \
--cc=wangqing7171@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.