fs/ext4/inode.c | 2 ++ 1 file changed, 2 insertions(+)
#syz test: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
Fix WARNING in ext4_xattr_block_set() during orphan cleanup on readonly
filesystems when debug_want_extra_isize mount option is used.
The issue occurs when ext4_try_to_expand_extra_isize() attempts to modify
inodes on readonly filesystems during orphan cleanup, leading to warnings
when encountering invalid xattr entries. Add a readonly check to skip
expansion in this case.
Reported-by: syzbot+4c9d23743a2409b80293@syzkaller.appspotmail.com
Link: https://syzkaller.appspot.com/bug?extid=4c9d23743a2409b80293
Signed-off-by: Deepanshu Kartikey <kartikey406@gmail.com>
---
fs/ext4/inode.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 5b7a15db4953..480f1f616e7b 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -6403,6 +6403,8 @@ static int ext4_try_to_expand_extra_isize(struct inode *inode,
struct ext4_iloc iloc,
handle_t *handle)
{
+ if (sb_rdonly(inode->i_sb))
+ return 0;
int no_expand;
int error;
--
2.43.0
Hello, syzbot has tested the proposed patch but the reproducer is still triggering an issue: WARNING in ext4_xattr_block_set loop0: detected capacity change from 0 to 512 EXT4-fs (loop0): orphan cleanup on readonly fs ------------[ cut here ]------------ WARNING: CPU: 0 PID: 6732 at fs/ext4/xattr.c:1906 ext4_xattr_block_set+0x25b5/0x2ac0 fs/ext4/xattr.c:1906 Modules linked in: CPU: 0 UID: 0 PID: 6732 Comm: syz.0.17 Not tainted syzkaller #0 PREEMPT_{RT,(full)} Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 08/18/2025 RIP: 0010:ext4_xattr_block_set+0x25b5/0x2ac0 fs/ext4/xattr.c:1906 Code: 00 00 00 e8 ed 6f a2 ff f0 80 63 28 fd eb 28 e8 b1 26 43 ff 31 db 48 c7 44 24 20 00 00 00 00 e9 88 f1 ff ff e8 9c 26 43 ff 90 <0f> 0b 90 e9 0e dc ff ff e8 8e 26 43 ff 48 8b 5c 24 10 4c 8b 74 24 RSP: 0018:ffffc900046d7200 EFLAGS: 00010293 RAX: ffffffff827b47a4 RBX: ffffc900046d7540 RCX: ffff88802d373b80 RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000 RBP: ffffc900046d7400 R08: 0000000000000000 R09: 0000000000000000 R10: ffff8880518b6400 R11: ffff8880518b6000 R12: 0000000000000000 R13: 1ffff920008daea9 R14: 1ffff920008daea8 R15: ffffc900046d7548 FS: 00007f40f60f66c0(0000) GS:ffff8881268bc000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007f7af07de000 CR3: 0000000033526000 CR4: 00000000003526f0 Call Trace: <TASK> ext4_xattr_move_to_block fs/ext4/xattr.c:2659 [inline] ext4_xattr_make_inode_space fs/ext4/xattr.c:2734 [inline] ext4_expand_extra_isize_ea+0x12d5/0x1ea0 fs/ext4/xattr.c:2822 __ext4_expand_extra_isize+0x30d/0x400 fs/ext4/inode.c:6385 ext4_try_to_expand_extra_isize fs/ext4/inode.c:6430 [inline] __ext4_mark_inode_dirty+0x4f3/0x780 fs/ext4/inode.c:6508 ext4_evict_inode+0x80d/0xee0 fs/ext4/inode.c:254 evict+0x501/0x9c0 fs/inode.c:810 ext4_orphan_cleanup+0xc20/0x1460 fs/ext4/orphan.c:474 __ext4_fill_super fs/ext4/super.c:5609 [inline] ext4_fill_super+0x57fa/0x60b0 fs/ext4/super.c:5728 get_tree_bdev_flags+0x40b/0x4d0 fs/super.c:1692 vfs_get_tree+0x8f/0x2b0 fs/super.c:1815 do_new_mount+0x2a2/0x9e0 fs/namespace.c:3808 do_mount fs/namespace.c:4136 [inline] __do_sys_mount fs/namespace.c:4347 [inline] __se_sys_mount+0x317/0x410 fs/namespace.c:4324 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0xfa/0x3b0 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f40f6a9034a Code: d8 64 89 02 48 c7 c0 ff ff ff ff eb a6 e8 de 1a 00 00 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 49 89 ca b8 a5 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007f40f60f5e68 EFLAGS: 00000246 ORIG_RAX: 00000000000000a5 RAX: ffffffffffffffda RBX: 00007f40f60f5ef0 RCX: 00007f40f6a9034a RDX: 0000200000000180 RSI: 00002000000001c0 RDI: 00007f40f60f5eb0 RBP: 0000200000000180 R08: 00007f40f60f5ef0 R09: 000000000080078b R10: 000000000080078b R11: 0000000000000246 R12: 00002000000001c0 R13: 00007f40f60f5eb0 R14: 0000000000000473 R15: 0000200000000680 </TASK> Tested on: commit: cec1e6e5 Merge tag 'sched_ext-for-6.17-rc7-fixes' of g.. git tree: upstream console output: https://syzkaller.appspot.com/x/log.txt?x=1485f712580000 kernel config: https://syzkaller.appspot.com/x/.config?x=f5b21423ca3f0a96 dashboard link: https://syzkaller.appspot.com/bug?extid=4c9d23743a2409b80293 compiler: Debian clang version 20.1.8 (++20250708063551+0c9f909b7976-1~exp1~20250708183702.136), Debian LLD 20.1.8 patch: https://syzkaller.appspot.com/x/patch.diff?x=16b4c27c580000
© 2016 - 2025 Red Hat, Inc.