[syzbot] [mm?] [gfs2?] WARNING in read_rindex_entry

1 view
Skip to first unread message

syzbot

unread,
Aug 19, 2026, 6:49:44 PMĀ (13 hours ago)Ā Aug 19
to ak...@linux-foundation.org, apo...@nvidia.com, byun...@sk.com, da...@kernel.org, gf...@lists.linux.dev, gou...@gourry.net, joshua...@gmail.com, linux-...@vger.kernel.org, linu...@kvack.org, matthe...@intel.com, raki...@sk.com, syzkall...@googlegroups.com, ying....@linux.alibaba.com, z...@nvidia.com
Hello,

syzbot found the following issue on:

HEAD commit: 15ef2f78c49d Merge tag 'input-for-v7.2-rc7' of git://git.k..
git tree: upstream
console+strace: https://syzkaller.appspot.com/x/log.txt?x=10871279580000
kernel config: https://syzkaller.appspot.com/x/.config?x=a0fdc3b566746377
dashboard link: https://syzkaller.appspot.com/bug?extid=9d20c3ad7d29227de28d
compiler: gcc (Debian 14.2.0-19) 14.2.0, GNU ld (GNU Binutils for Debian) 2.44
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=14871279580000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=100d2a25580000

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/c2a8c7d3a889/disk-15ef2f78.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/2da78afed345/vmlinux-15ef2f78.xz
kernel image: https://storage.googleapis.com/syzbot-assets/c4ffd97e4708/bzImage-15ef2f78.xz
mounted in repro: https://storage.googleapis.com/syzbot-assets/eaa4120812b6/mount_0.gz
fsck result: failed (log: https://syzkaller.appspot.com/x/fsck.log?x=17f52a25580000)

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+9d20c3...@syzkaller.appspotmail.com

gfs2: fsid=.: Now mounting FS (format 1801)...
gfs2: fsid=..0: journal 0 mapped with 18 extents in 0ms
gfs2: fsid=..0: first mount done, others may mount
------------[ cut here ]------------
1
WARNING: mm/page_alloc.c:5280 at __alloc_frozen_pages_noprof+0x2427/0x2dc0 mm/page_alloc.c:5280, CPU#1: syz-executor256/5629
Modules linked in:
CPU: 1 UID: 0 PID: 5629 Comm: syz-executor256 Not tainted syzkaller #0 PREEMPT(full)
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/16/2026
RIP: 0010:__alloc_frozen_pages_noprof+0x2427/0x2dc0 mm/page_alloc.c:5280
Code: e9 8d fb ff ff 31 d2 be 28 12 00 00 48 c7 c7 a0 64 e1 8b e8 5b 8c 69 ff 2e 2e 2e 31 c0 e9 02 ed ff ff c6 05 54 c1 9d 0e 01 90 <0f> 0b 90 e9 6f df ff ff 48 c7 c7 80 ae d3 8e 45 89 f7 44 8b 74 24
RSP: 0018:ffffc9000345f0e0 EFLAGS: 00010246
RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
RDX: 0000000000000000 RSI: 1ffff9200068be36 RDI: 0000000000040d40
RBP: 000000000000000b R08: 0000000000000005 R09: 0000000000000009
R10: 000000000000000b R11: 0000000000000000 R12: 0000000000040d40
R13: 1ffff9200068be74 R14: ffffffff9b759444 R15: 0000000000000001
FS: 000055556d263400(0000) GS:ffff888123ee1000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 000055886dbe9978 CR3: 000000003394d000 CR4: 0000000000350ef0
Call Trace:
<TASK>
alloc_pages_mpol+0x1fb/0x540 mm/mempolicy.c:2490
___kmalloc_large_node+0xe5/0x120 mm/slub.c:5274
__kmalloc_large_node_noprof+0x1c/0x70 mm/slub.c:5305
__do_kmalloc_node mm/slub.c:5322 [inline]
__kmalloc_noprof+0x5a1/0x820 mm/slub.c:5359
_kmalloc_noprof include/linux/slab.h:992 [inline]
_kzalloc_noprof include/linux/slab.h:1309 [inline]
compute_bitstructs fs/gfs2/rgrp.c:766 [inline]
read_rindex_entry+0x4a1/0x1250 fs/gfs2/rgrp.c:931
gfs2_ri_update+0x6f/0x3b0 fs/gfs2/rgrp.c:1001
gfs2_rindex_update+0x40b/0x480 fs/gfs2/rgrp.c:1051
init_inodes+0x1f78/0x2790 fs/gfs2/ops_fstype.c:872
gfs2_fill_super+0x1d3d/0x2cf0 fs/gfs2/ops_fstype.c:1250
get_tree_bdev_flags+0x38c/0x620 fs/super.c:1640
gfs2_get_tree+0x4e/0x280 fs/gfs2/ops_fstype.c:1332
vfs_get_tree+0x92/0x320 fs/super.c:1700
fc_mount fs/namespace.c:1198 [inline]
do_new_mount_fc fs/namespace.c:3765 [inline]
do_new_mount fs/namespace.c:3841 [inline]
path_mount+0x7d0/0x23d0 fs/namespace.c:4161
do_mount fs/namespace.c:4174 [inline]
__do_sys_mount fs/namespace.c:4390 [inline]
__se_sys_mount fs/namespace.c:4367 [inline]
__x64_sys_mount+0x293/0x310 fs/namespace.c:4367
do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
do_syscall_64+0x115/0x870 arch/x86/entry/syscall_64.c:94
entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7ff9e8de99ea
Code: 56 53 b8 9d 00 00 00 0f 05 83 f8 ea 75 a2 c7 05 a4 30 0a 00 00 00 00 00 eb 96 e8 51 05 00 00 90 49 89 ca b8 a5 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 d8 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007ffc770eecc8 EFLAGS: 00000246 ORIG_RAX: 00000000000000a5
RAX: ffffffffffffffda RBX: 00007ffc770eece0 RCX: 00007ff9e8de99ea
RDX: 0000200000000040 RSI: 0000200000000100 RDI: 00007ffc770eece0
RBP: 0000200000000100 R08: 00007ffc770eed20 R09: 0000000000000000
R10: 0000000000008cd3 R11: 0000000000000246 R12: 0000200000000040
R13: 0000000000000004 R14: 0000000000000003 R15: 00007ffc770eed20
</TASK>


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzk...@googlegroups.com.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.

If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want syzbot to run the reproducer, reply with:
#syz test: git://repo/address.git branch-or-commit-hash
If you attach or paste a git patch, syzbot will apply it before testing.

If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup

Andrew Morton

unread,
Aug 19, 2026, 8:14:13 PMĀ (11 hours ago)Ā Aug 19
to syzbot, apo...@nvidia.com, byun...@sk.com, da...@kernel.org, gf...@lists.linux.dev, gou...@gourry.net, joshua...@gmail.com, linux-...@vger.kernel.org, linu...@kvack.org, matthe...@intel.com, raki...@sk.com, syzkall...@googlegroups.com, ying....@linux.alibaba.com, z...@nvidia.com
On Wed, 19 Aug 2026 15:49:42 -0700 syzbot <syzbot+9d20c3...@syzkaller.appspotmail.com> wrote:

> Hello,
>
> syzbot found the following issue on:
>
> HEAD commit: 15ef2f78c49d Merge tag 'input-for-v7.2-rc7' of git://git.k..
> git tree: upstream
> console+strace: https://syzkaller.appspot.com/x/log.txt?x=10871279580000
> kernel config: https://syzkaller.appspot.com/x/.config?x=a0fdc3b566746377
> dashboard link: https://syzkaller.appspot.com/bug?extid=9d20c3ad7d29227de28d
> compiler: gcc (Debian 14.2.0-19) 14.2.0, GNU ld (GNU Binutils for Debian) 2.44
> syz repro: https://syzkaller.appspot.com/x/repro.syz?x=14871279580000
> C reproducer: https://syzkaller.appspot.com/x/repro.c?x=100d2a25580000
>
> Downloadable assets:
> disk image: https://storage.googleapis.com/syzbot-assets/c2a8c7d3a889/disk-15ef2f78.raw.xz
> vmlinux: https://storage.googleapis.com/syzbot-assets/2da78afed345/vmlinux-15ef2f78.xz
> kernel image: https://storage.googleapis.com/syzbot-assets/c4ffd97e4708/bzImage-15ef2f78.xz
> mounted in repro: https://storage.googleapis.com/syzbot-assets/eaa4120812b6/mount_0.gz
> fsck result: failed (log: https://syzkaller.appspot.com/x/fsck.log?x=17f52a25580000)
>
> IMPORTANT: if you fix the issue, please add the following tag to the commit:
> Reported-by: syzbot+9d20c3...@syzkaller.appspotmail.com

Thanks. Mounting an intentionally corrupted fs image, I assume.

It appears that GFS2 forgot to validate the `ri_length' which it read
from disk. That gets used in compute_bitstructs()->kzalloc_objs() and
the memory allocator didn't like the excessively-sized allocation
attempt.

Edward Adam Davis

unread,
Aug 19, 2026, 9:24:51 PMĀ (10 hours ago)Ā Aug 19
to syzbot+9d20c3...@syzkaller.appspotmail.com, linux-...@vger.kernel.org, syzkall...@googlegroups.com
#syz test

diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
index 5988a165a830..945657bf5006 100644
--- a/fs/gfs2/rgrp.c
+++ b/fs/gfs2/rgrp.c
@@ -899,6 +899,7 @@ static int read_rindex_entry(struct gfs2_inode *ip)
struct gfs2_rindex buf;
int error;
struct gfs2_rgrpd *rgd;
+ size_t size;

if (pos >= i_size_read(&ip->i_inode))
return 1;
@@ -917,6 +918,13 @@ static int read_rindex_entry(struct gfs2_inode *ip)
rgd->rd_sbd = sdp;
rgd->rd_addr = be64_to_cpu(buf.ri_addr);
rgd->rd_length = be32_to_cpu(buf.ri_length);
+
+ size = rgd->rd_length * sizeof(struct gfs2_bitmap);
+ if (get_order(size) > MAX_PAGE_ORDER) {
+ error = -EFBIG;
+ goto fail;
+ }
+
rgd->rd_data0 = be64_to_cpu(buf.ri_data0);
rgd->rd_data = be32_to_cpu(buf.ri_data);
rgd->rd_bitbytes = be32_to_cpu(buf.ri_bitbytes);

Zi Yan

unread,
Aug 19, 2026, 9:35:12 PMĀ (10 hours ago)Ā Aug 19
to Andrew Morton, syzbot, Vlastimil Babka, apo...@nvidia.com, byun...@sk.com, da...@kernel.org, gf...@lists.linux.dev, gou...@gourry.net, joshua...@gmail.com, linux-...@vger.kernel.org, linu...@kvack.org, matthe...@intel.com, raki...@sk.com, syzkall...@googlegroups.com, ying....@linux.alibaba.com
+Vlastimil

This makes me question my recent patch[1] that returns NULL for kmalloc
sizes bigger than KMALLOC_MAX_SIZE. It masks this issue.

Probably, we should use __GFP_NOWARN for the GadgetFS warn[2] like
Andrew suggested, since the caller does not care the NULL from kmalloc()
is caused by invalid input or ENOMEM.

For this one, GFS2 needs to validate the ri_length.


[1] https://lore.kernel.org/all/20260817-limit_kmalloc...@nvidia.com/
[2] https://lore.kernel.org/all/6a820ebc.9ebadd4...@google.com/
--
Best Regards,
Yan, Zi

syzbot

unread,
12:20 AMĀ (7 hours ago)Ā 12:20 AM
to ead...@qq.com, linux-...@vger.kernel.org, syzkall...@googlegroups.com
Hello,

syzbot has tested the proposed patch and the reproducer did not trigger any issue:

Reported-by: syzbot+9d20c3...@syzkaller.appspotmail.com
Tested-by: syzbot+9d20c3...@syzkaller.appspotmail.com

Tested on:

commit: a4ff2be3 Merge tag 'v7.3-p1' of git://git.kernel.org/p..
git tree: upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=1554d679580000
kernel config: https://syzkaller.appspot.com/x/.config?x=2dcc0d2147bd1324
dashboard link: https://syzkaller.appspot.com/bug?extid=9d20c3ad7d29227de28d
compiler: gcc (Debian 14.2.0-19) 14.2.0, GNU ld (GNU Binutils for Debian) 2.44
patch: https://syzkaller.appspot.com/x/patch.diff?x=1258a549580000

Note: testing is done by a robot and is best-effort only.

Edward Adam Davis

unread,
12:21 AMĀ (7 hours ago)Ā 12:21 AM
to syzbot+9d20c3...@syzkaller.appspotmail.com, agru...@redhat.com, swhi...@redhat.com, ak...@linux-foundation.org, apo...@nvidia.com, byun...@sk.com, da...@kernel.org, gf...@lists.linux.dev, gou...@gourry.net, joshua...@gmail.com, linux-...@vger.kernel.org, linu...@kvack.org, matthe...@intel.com, raki...@sk.com, syzkall...@googlegroups.com, ying....@linux.alibaba.com, z...@nvidia.com
When mounting a deliberately corrupted filesystem image, an excessively
large rgrp header length is used in a call to kzalloc_objs() within
compute_bitstructs(), and the memory allocator cannot handle such a large
allocation request. This triggers [1].

Add a check for the rgrp header length to avoid [1].

[1]
WARNING: mm/page_alloc.c:5280 at __alloc_frozen_pages_noprof+0x2427/0x2dc0 mm/page_alloc.c:5280, CPU#1: syz-executor256/5629
Call Trace:
alloc_pages_mpol+0x1fb/0x540 mm/mempolicy.c:2490
___kmalloc_large_node+0xe5/0x120 mm/slub.c:5274
__kmalloc_large_node_noprof+0x1c/0x70 mm/slub.c:5305
__do_kmalloc_node mm/slub.c:5322 [inline]
__kmalloc_noprof+0x5a1/0x820 mm/slub.c:5359
_kmalloc_noprof include/linux/slab.h:992 [inline]
_kzalloc_noprof include/linux/slab.h:1309 [inline]
compute_bitstructs fs/gfs2/rgrp.c:766 [inline]
read_rindex_entry+0x4a1/0x1250 fs/gfs2/rgrp.c:931
gfs2_ri_update+0x6f/0x3b0 fs/gfs2/rgrp.c:1001
gfs2_rindex_update+0x40b/0x480 fs/gfs2/rgrp.c:1051
init_inodes+0x1f78/0x2790 fs/gfs2/ops_fstype.c:872
gfs2_fill_super+0x1d3d/0x2cf0 fs/gfs2/ops_fstype.c:1250
get_tree_bdev_flags+0x38c/0x620 fs/super.c:1640
gfs2_get_tree+0x4e/0x280 fs/gfs2/ops_fstype.c:1332
vfs_get_tree+0x92/0x320 fs/super.c:1700
fc_mount fs/namespace.c:1198 [inline]

Fixes: bb8d8a6f54c1 ("[GFS2] Fix sign problem in quota/statfs and cleanup _host structures")
Reported-by: syzbot+9d20c3...@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=9d20c3ad7d29227de28d
Tested-by: syzbot+9d20c3...@syzkaller.appspotmail.com
Signed-off-by: Edward Adam Davis <ead...@qq.com>
---
fs/gfs2/rgrp.c | 8 ++++++++
1 file changed, 8 insertions(+)

diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
index 5988a165a830..53d097ce668e 100644
--- a/fs/gfs2/rgrp.c
+++ b/fs/gfs2/rgrp.c
@@ -899,6 +899,7 @@ static int read_rindex_entry(struct gfs2_inode *ip)
struct gfs2_rindex buf;
int error;
struct gfs2_rgrpd *rgd;
+ size_t size;

if (pos >= i_size_read(&ip->i_inode))
return 1;
@@ -917,6 +918,13 @@ static int read_rindex_entry(struct gfs2_inode *ip)
rgd->rd_sbd = sdp;
rgd->rd_addr = be64_to_cpu(buf.ri_addr);
rgd->rd_length = be32_to_cpu(buf.ri_length);
+
+ size = rgd->rd_length * sizeof(struct gfs2_bitmap);
+ if (get_order(size) > MAX_PAGE_ORDER) {
+ error = -EINVAL;
+ goto fail;
+ }
+
rgd->rd_data0 = be64_to_cpu(buf.ri_data0);
rgd->rd_data = be32_to_cpu(buf.ri_data);
rgd->rd_bitbytes = be32_to_cpu(buf.ri_bitbytes);
--
2.43.0

Reply all
Reply to author
Forward
0 new messages