40 lines
1.5 KiB
Diff
40 lines
1.5 KiB
Diff
|
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
|
||
|
|