From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Lyle Subject: [PATCH] bio: ensure __bio_clone_fast copies bi_partno Date: Thu, 16 Nov 2017 23:47:25 -0800 Message-ID: <20171117074725.22536-1-mlyle@lyle.org> Return-path: Received: from mail-pf0-f193.google.com ([209.85.192.193]:34517 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S964895AbdKQHsn (ORCPT ); Fri, 17 Nov 2017 02:48:43 -0500 Received: by mail-pf0-f193.google.com with SMTP id x7so1380506pfa.1 for ; Thu, 16 Nov 2017 23:48:43 -0800 (PST) Sender: linux-bcache-owner@vger.kernel.org List-Id: linux-bcache@vger.kernel.org To: linux-block@vger.kernel.org, linux-bcache@vger.kernel.org Cc: Michael Lyle , Christoph Hellwig , Jens Axboe , stable@vger.kernel.org A new field was introduced in 74d46992e0d9dee7f1f376de0d56d31614c8a17a, 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 Fixes: 74d46992e0d9dee7f1f376de0d56d31614c8a17a Reported-by: Pavel Goran Reported-by: Campbell Steven Cc: Christoph Hellwig Cc: Jens Axboe Cc: --- block/bio.c | 1 + 1 file changed, 1 insertion(+) diff --git a/block/bio.c b/block/bio.c index 101c2a9b5481..33fa6b4af312 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.14.1