In the Linux kernel, the following vulnerability has been resolved:
btrfs: do not BUG_ON() when freeing tree block after error
When freeing a tree block, at btrfsfreetreeblock(), if we fail to create a delayed reference we don't deal with the error and just do a BUGON(). The error most likely to happen is -ENOMEM, and we have a comment mentioning that only -ENOMEM can happen, but that is not true, because in case qgroups are enabled any error returned from btrfsqgrouptraceextentpost() (can be -EUCLEAN or anything returned from btrfssearchslot() for example) can be propagated back to btrfsfreetree_block().
So stop doing a BUG_ON() and return the error to the callers and make them abort the transaction to prevent leaking space. Syzbot was triggering this, likely due to memory allocation failure injection.