Re: [syzbot] [ext4?] general protection fault in utf8nlookup

From: Eric Biggers
Date: Wed Sep 20 2023 - 03:37:40 EST


On Tue, Sep 19, 2023 at 10:25:22PM -0700, syzbot wrote:
> Hello,
>
> syzbot found the following issue on:
>
> HEAD commit: e42bebf6db29 Merge tag 'efi-fixes-for-v6.6-1' of git://git..
> git tree: upstream
> console+strace: https://syzkaller.appspot.com/x/log.txt?x=179f4a38680000
> kernel config: https://syzkaller.appspot.com/x/.config?x=df91a3034fe3f122
> dashboard link: https://syzkaller.appspot.com/bug?extid=9cf75dc581fb4307d6dd
> compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40
> syz repro: https://syzkaller.appspot.com/x/repro.syz?x=1374a174680000
> C reproducer: https://syzkaller.appspot.com/x/repro.c?x=12b12928680000
>
> Downloadable assets:
> disk image: https://storage.googleapis.com/syzbot-assets/14a6a5d23944/disk-e42bebf6.raw.xz
> vmlinux: https://storage.googleapis.com/syzbot-assets/98cc4c220388/vmlinux-e42bebf6.xz
> kernel image: https://storage.googleapis.com/syzbot-assets/6a1d09cf21bf/bzImage-e42bebf6.xz
> mounted in repro #1: https://storage.googleapis.com/syzbot-assets/37e5beb24789/mount_0.gz
> mounted in repro #2: https://storage.googleapis.com/syzbot-assets/f219a9e665e9/mount_8.gz
>
> The issue was bisected to:
>
> commit b81427939590450172716093dafdda8ef52e020f
> Author: Eric Biggers <ebiggers@xxxxxxxxxx>
> Date: Mon Aug 14 18:29:02 2023 +0000
>
> ext4: remove redundant checks of s_encoding
>
> bisection log: https://syzkaller.appspot.com/x/bisect.txt?x=10852352680000
> final oops: https://syzkaller.appspot.com/x/report.txt?x=12852352680000
> console output: https://syzkaller.appspot.com/x/log.txt?x=14852352680000

This report is expected for now, since the repro involves writing to the page
cache of a mounted block device. For more information see
https://lore.kernel.org/linux-fsdevel/20230813001202.GE41642@sol.localdomain and
https://lore.kernel.org/linux-fsdevel/20230814182903.37267-2-ebiggers@xxxxxxxxxx.
Also https://lore.kernel.org/linux-fsdevel/20230704122727.17096-1-jack@xxxxxxx
which will ultimately be the fix for this class of issue.

Note: the repro that syzkaller generated for this is very strange (even moreso
than usual for syzkaller repros...) because it replaces its "scratch space" at
address 0x20000000 with a different mapping, specifically a mapping for a file
that is mounted as a filesystem via loopback. That makes "syscalls" have weird
side effects as a result of the repro writing parameters to the address that is
supposed to contain its scratch space. I don't think this should be happening,
so I've opened https://github.com/google/syzkaller/issues/4216 for it.

- Eric