Re: [syzbot] [btrfs?] kernel BUG in btrfs_backref_release_cache
From: David Sterba
Date: Thu Mar 27 2025 - 14:27:06 EST
On Fri, Feb 21, 2025 at 10:17:28AM -0800, syzbot wrote:
> Hello,
>
> syzbot found the following issue on:
>
> HEAD commit: 0ad2507d5d93 Linux 6.14-rc3
> git tree: upstream
> console output: https://syzkaller.appspot.com/x/log.txt?x=14b775a4580000
> kernel config: https://syzkaller.appspot.com/x/.config?x=b7bde34acd8f53b1
> dashboard link: https://syzkaller.appspot.com/bug?extid=1de7265d1e4c0c19dd35
> compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40
>
> Unfortunately, I don't have any reproducer for this issue yet.
>
> Downloadable assets:
> disk image (non-bootable): https://storage.googleapis.com/syzbot-assets/7feb34a89c2a/non_bootable_disk-0ad2507d.raw.xz
> vmlinux: https://storage.googleapis.com/syzbot-assets/dfb4fc7c042e/vmlinux-0ad2507d.xz
> kernel image: https://storage.googleapis.com/syzbot-assets/1682113b81f5/bzImage-0ad2507d.xz
>
> IMPORTANT: if you fix the issue, please add the following tag to the commit:
> Reported-by: syzbot+1de7265d1e4c0c19dd35@xxxxxxxxxxxxxxxxxxxxxxxxx
>
> loop0: detected capacity change from 0 to 32768
> BTRFS: device fsid ed167579-eb65-4e76-9a50-61ac97e9b59d devid 1 transid 8 /dev/loop0 (7:0) scanned by syz.0.0 (5320)
> BTRFS info (device loop0): first mount of filesystem ed167579-eb65-4e76-9a50-61ac97e9b59d
> BTRFS info (device loop0): using sha256 (sha256-avx2) checksum algorithm
> BTRFS info (device loop0): rebuilding free space tree
> BTRFS info (device loop0): disabling free space tree
> BTRFS info (device loop0): clearing compat-ro feature flag for FREE_SPACE_TREE (0x1)
> BTRFS info (device loop0): clearing compat-ro feature flag for FREE_SPACE_TREE_VALID (0x2)
> BTRFS info (device loop0): balance: start -d -m
> BTRFS info (device loop0): relocating block group 6881280 flags data|metadata
> BTRFS info (device loop0): relocating block group 5242880 flags data|metadata
> BTRFS info (device loop0): found 139 extents, stage: move data extents
> assertion failed: !cache->nr_nodes, in fs/btrfs/backref.c:3160
> ------------[ cut here ]------------
> kernel BUG at fs/btrfs/backref.c:3160!
void btrfs_backref_release_cache(struct btrfs_backref_cache *cache)
{
struct btrfs_backref_node *node;
while ((node = rb_entry_safe(rb_first(&cache->rb_root),
struct btrfs_backref_node, rb_node)))
btrfs_backref_cleanup_node(cache, node);
ASSERT(list_empty(&cache->pending_edge));
ASSERT(list_empty(&cache->useless_node));
ASSERT(!cache->nr_nodes);