diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c
index 562dad10dee9b894344abe65c5e7c6962d6ae112..ed11d3866afde2ccef62ab55f66374622cb649fe 100644
--- a/fs/btrfs/scrub.c
+++ b/fs/btrfs/scrub.c
@@ -655,6 +655,7 @@ static void scrub_fixup(struct scrub_bio *sbio, int ix)
 		       "scrub_fixup: btrfs_map_block failed us for %llu\n",
 		       (unsigned long long)logical);
 		WARN_ON(1);
+		kfree(bbio);
 		return;
 	}