]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
btrfs: do not clean up repair bio if submit fails
authorJosef Bacik <josef@toxicpanda.com>
Fri, 18 Feb 2022 15:03:29 +0000 (10:03 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 22 May 2025 12:08:27 +0000 (14:08 +0200)
commit7170875083254b51fcc5d67f96640977083f481e
tree1d7536b5113e5e1dae1a04657187525c6e70ae14
parentd64807ded1b6054f066e03d8add6d920f3db9e5d
btrfs: do not clean up repair bio if submit fails

commit 8cbc3001a3264d998d6b6db3e23f935c158abd4d upstream.

The submit helper will always run bio_endio() on the bio if it fails to
submit, so cleaning up the bio just leads to a variety of use-after-free
and NULL pointer dereference bugs because we race with the endio
function that is cleaning up the bio.  Instead just return BLK_STS_OK as
the repair function has to continue to process the rest of the pages,
and the endio for the repair bio will do the appropriate cleanup for the
page that it was given.

Reviewed-by: Boris Burkov <boris@bur.io>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: David Sterba <dsterba@suse.com>
[Minor context change fixed.]
Signed-off-by: Bin Lan <bin.lan.cn@windriver.com>
Signed-off-by: He Zhe <zhe.he@windriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/btrfs/extent_io.c