diff options
Diffstat (limited to '0001-bio-ensure-__bio_clone_fast-copies-bi_partno.patch')
-rw-r--r-- | 0001-bio-ensure-__bio_clone_fast-copies-bi_partno.patch | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/0001-bio-ensure-__bio_clone_fast-copies-bi_partno.patch b/0001-bio-ensure-__bio_clone_fast-copies-bi_partno.patch new file mode 100644 index 000000000000..c9f4a3a3a347 --- /dev/null +++ b/0001-bio-ensure-__bio_clone_fast-copies-bi_partno.patch @@ -0,0 +1,39 @@ +From 62530ed8b1d07a45dec94d46e521c0c6c2d476e6 Mon Sep 17 00:00:00 2001 +Message-Id: <62530ed8b1d07a45dec94d46e521c0c6c2d476e6.1511339979.git.jan.steffens@gmail.com> +From: Michael Lyle <mlyle@lyle.org> +Date: Thu, 16 Nov 2017 23:47:25 -0800 +Subject: [PATCH] bio: ensure __bio_clone_fast copies bi_partno + +A new field was introduced in 74d46992e0d9, bi_partno, instead of using +bdev->bd_contains and encoding the partition information in the bi_bdev +field. __bio_clone_fast was changed to copy the disk information, but +not the partition information. At minimum, this regressed bcache and +caused data corruption. + +Signed-off-by: Michael Lyle <mlyle@lyle.org> +Fixes: 74d46992e0d9 ("block: replace bi_bdev with a gendisk pointer and partitions index") +Reported-by: Pavel Goran <via-bcache@pvgoran.name> +Reported-by: Campbell Steven <casteven@gmail.com> +Reviewed-by: Coly Li <colyli@suse.de> +Reviewed-by: Ming Lei <ming.lei@redhat.com> +Cc: <stable@vger.kernel.org> # 4.14 +Signed-off-by: Jens Axboe <axboe@kernel.dk> +--- + block/bio.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/block/bio.c b/block/bio.c +index b94a802f8ba34189..459cc857f3d91647 100644 +--- a/block/bio.c ++++ b/block/bio.c +@@ -597,6 +597,7 @@ void __bio_clone_fast(struct bio *bio, struct bio *bio_src) + * so we don't set nor calculate new physical/hw segment counts here + */ + bio->bi_disk = bio_src->bi_disk; ++ bio->bi_partno = bio_src->bi_partno; + bio_set_flag(bio, BIO_CLONED); + bio->bi_opf = bio_src->bi_opf; + bio->bi_write_hint = bio_src->bi_write_hint; +-- +2.15.0 + |