From: syzbot <syzbot+4b4093b1f24ad789bf37@syzkaller.appspotmail.com>
To: linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com
Subject: Forwarded: [PATCH] nilfs2: fix uninitialized btree node cache in nilfs_attach_btree_node_cache
Date: Tue, 17 Mar 2026 00:36:43 -0700 [thread overview]
Message-ID: <69b9048b.a00a0220.3b25d1.002c.GAE@google.com> (raw)
In-Reply-To: <69b8c713.a00a0220.3b25d1.0029.GAE@google.com>
For archival purposes, forwarding an incoming command email to
linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com.
***
Subject: [PATCH] nilfs2: fix uninitialized btree node cache in nilfs_attach_btree_node_cache
Author: kartikey406@gmail.com
#syz test: git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
When nilfs_attach_btree_node_cache() finds a cached btnc_inode that is
not I_NEW, it skips nilfs_init_btnc_inode() leaving the btree node
cache in a stale or uninitialized state from a previous failed mount.
This causes i_assoc_inode to point to a broken inode, leading to a
null-ptr-deref in nilfs_mdt_save_to_shadow_map() when
NILFS_IOCTL_CLEAN_SEGMENTS is invoked.
Fix this by calling nilfs_init_btnc_inode() for cached btnc inodes as
well to ensure proper initialization regardless of inode cache state.
Reported-by: syzbot+4b4093b1f24ad789bf37@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=4b4093b1f24ad789bf37
Signed-off-by: Deepanshu Kartikey <Kartikey406@gmail.com>
---
fs/nilfs2/inode.c | 7 +++++++
fs/nilfs2/mdt.c | 8 ++++++++
2 files changed, 15 insertions(+)
diff --git a/fs/nilfs2/inode.c b/fs/nilfs2/inode.c
index 51bde45d5865..8312abbe343d 100644
--- a/fs/nilfs2/inode.c
+++ b/fs/nilfs2/inode.c
@@ -631,6 +631,9 @@ int nilfs_attach_btree_node_cache(struct inode *inode)
nilfs_iget_set, &args);
if (unlikely(!btnc_inode))
return -ENOMEM;
+ pr_err("NILFS DEBUG btnc: btnc=%px I_NEW=%d\n",
+ btnc_inode,
+ !!(inode_state_read_once(btnc_inode) & I_NEW));
if (inode_state_read_once(btnc_inode) & I_NEW) {
nilfs_init_btnc_inode(btnc_inode);
unlock_new_inode(btnc_inode);
@@ -686,6 +689,10 @@ struct inode *nilfs_iget_for_shadow(struct inode *inode)
nilfs_iget_set, &args);
if (unlikely(!s_inode))
return ERR_PTR(-ENOMEM);
+ pr_err("NILFS DEBUG: s_inode=%px I_NEW=%d i_assoc=%px\n",
+ s_inode,
+ !!(inode_state_read_once(s_inode) & I_NEW),
+ NILFS_I(s_inode)->i_assoc_inode);
if (!(inode_state_read_once(s_inode) & I_NEW))
return inode;
diff --git a/fs/nilfs2/mdt.c b/fs/nilfs2/mdt.c
index 946b0d3534a5..968a5be834cc 100644
--- a/fs/nilfs2/mdt.c
+++ b/fs/nilfs2/mdt.c
@@ -551,6 +551,14 @@ int nilfs_mdt_save_to_shadow_map(struct inode *inode)
struct inode *s_inode = shadow->inode;
int ret;
+ if (!ii->i_assoc_inode) {
+ pr_err("NILFS DEBUG: ii->i_assoc_inode is NULL, attaching\n");
+ dump_stack();
+ ret = nilfs_attach_btree_node_cache(inode);
+ if (ret) {
+ pr_err("NILFS: failed to attach btree node cache: %d\n", ret);
+ }
+ }
ret = nilfs_copy_dirty_pages(s_inode->i_mapping, inode->i_mapping);
if (ret)
goto out;
--
2.43.0
next prev parent reply other threads:[~2026-03-17 7:36 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-17 3:14 [syzbot] [nilfs?] general protection fault in nilfs_mdt_save_to_shadow_map syzbot
2026-03-17 3:40 ` Forwarded: [PATCH] nilfs2: fix NULL i_assoc_inode dereference " syzbot
2026-03-17 4:25 ` Forwarded: [PATCH] nilfs2: fix wrong inode returned from nilfs_iget_for_shadow on cache hit syzbot
2026-03-17 6:25 ` Forwarded: [PATCH] nilfs2: fix missing i_assoc_inode initialization in nilfs_iget_for_shadow syzbot
2026-03-17 6:47 ` Forwarded: [PATCH] nilfs2: fix uninitialized btree node cache in nilfs_attach_btree_node_cache syzbot
2026-03-17 7:36 ` syzbot [this message]
2026-03-17 8:09 ` [syzbot] [nilfs?] general protection fault in nilfs_mdt_save_to_shadow_map Edward Adam Davis
2026-03-17 8:41 ` syzbot
2026-03-17 8:26 ` Forwarded: [PATCH] nilfs2: fix NULL i_assoc_inode dereference " syzbot
2026-03-17 8:29 ` [PATCH] nilfs2: no longer save to shadow map if the num of members is too small Edward Adam Davis
2026-03-17 15:13 ` Deepanshu Kartikey
2026-03-17 15:15 ` Deepanshu Kartikey
2026-03-17 16:51 ` Ryusuke Konishi
2026-03-17 23:00 ` Ryusuke Konishi
2026-03-18 0:08 ` Edward Adam Davis
2026-03-18 0:54 ` Ryusuke Konishi
2026-03-18 1:16 ` Edward Adam Davis
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=69b9048b.a00a0220.3b25d1.002c.GAE@google.com \
--to=syzbot+4b4093b1f24ad789bf37@syzkaller.appspotmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=syzkaller-bugs@googlegroups.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.