Re: [PATCH v2] btrfs: qgroup: don't use extent changeset when not needed

From: David Sterba
Date: Wed Aug 28 2024 - 17:56:48 EST


On Wed, Aug 28, 2024 at 07:14:11PM +0300, Fedor Pchelkin wrote:
> The local extent changeset is passed to clear_record_extent_bits() where
> it may have some additional memory dynamically allocated for ulist. When
> qgroup is disabled, the memory is leaked because in this case the
> changeset is not released upon __btrfs_qgroup_release_data() return.
>
> Since the recorded contents of the changeset are not used thereafter, just
> don't pass it.
>
> Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
>
> Reported-by: syzbot+81670362c283f3dd889c@xxxxxxxxxxxxxxxxxxxxxxxxx
> Closes: https://lore.kernel.org/lkml/000000000000aa8c0c060ade165e@xxxxxxxxxx
> Fixes: af0e2aab3b70 ("btrfs: qgroup: flush reservations during quota disable")
> Cc: stable@xxxxxxxxxxxxxxx # 6.10+
> Signed-off-by: Fedor Pchelkin <pchelkin@xxxxxxxxx>
> ---
> v2: rework the fix as Qu Wenruo suggested - just don't pass unneeded
> changeset. Update the commit title and description accordingly.

Thanks, added to for-next.