In the Linux kernel, the following vulnerability has been resolved:
btrfs: zoned: fix lock ordering in btrfszoneactivate()
The btrfs CI reported a lockdep warning as follows by running generic generic/129.
WARNING: possible circular locking dependency detected 6.7.0-rc5+ #1 Not tainted
kworker/u5:5/793427 is trying to acquire lock: ffff88813256d028 (&cache->lock){+.+.}-{2:2}, at: btrfszonefinishonebg+0x5e/0x130 but task is already holding lock: ffff88810a23a318 (&fsinfo->zoneactivebgslock){+.+.}-{2:2}, at: btrfszonefinishonebg+0x34/0x130 which lock already depends on the new lock.
the existing dependency chain (in reverse order) is: -> #1 (&fsinfo->zoneactivebgslock){+.+.}-{2:2}: ... -> #0 (&cache->lock){+.+.}-{2:2}: ...
This is because we take fsinfo->zoneactivebgslock after a blockgroup's lock in btrfszone_activate() while doing the opposite in other places.
Fix the issue by expanding the fsinfo->zoneactivebgslock's critical section and taking it before a block_group's lock.