This commit is contained in:
Jan Alexander Steffens 2017-11-22 09:29:43 +00:00
parent d04f971153
commit 206c0099c0
2 changed files with 46 additions and 2 deletions

View File

@ -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

View File

@ -5,7 +5,7 @@ pkgbase=linux # Build stock -ARCH kernel
#pkgbase=linux-custom # Build kernel with a different name #pkgbase=linux-custom # Build kernel with a different name
_srcname=linux-4.14 _srcname=linux-4.14
pkgver=4.14.1 pkgver=4.14.1
pkgrel=1 pkgrel=2
arch=('x86_64') arch=('x86_64')
url="https://www.kernel.org/" url="https://www.kernel.org/"
license=('GPL2') license=('GPL2')
@ -21,6 +21,7 @@ source=(
'90-linux.hook' # pacman hook for initramfs regeneration '90-linux.hook' # pacman hook for initramfs regeneration
'linux.preset' # standard config files for mkinitcpio ramdisk 'linux.preset' # standard config files for mkinitcpio ramdisk
'0001-platform-x86-hp-wmi-Fix-tablet-mode-detection-for-co.patch' '0001-platform-x86-hp-wmi-Fix-tablet-mode-detection-for-co.patch'
'0001-bio-ensure-__bio_clone_fast-copies-bi_partno.patch'
) )
validpgpkeys=( validpgpkeys=(
'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds 'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds
@ -34,7 +35,8 @@ sha256sums=('f81d59477e90a130857ce18dc02f4fbe5725854911db1e7ba770c7cd350f96a7'
'ae2e95db94ef7176207c690224169594d49445e04249d2499e9d2fbc117a0b21' 'ae2e95db94ef7176207c690224169594d49445e04249d2499e9d2fbc117a0b21'
'75f99f5239e03238f88d1a834c50043ec32b1dc568f2cc291b07d04718483919' '75f99f5239e03238f88d1a834c50043ec32b1dc568f2cc291b07d04718483919'
'ad6344badc91ad0630caacde83f7f9b97276f80d26a20619a87952be65492c65' 'ad6344badc91ad0630caacde83f7f9b97276f80d26a20619a87952be65492c65'
'6f1d9b6a119bfab150a0bc1f550609dd9290328df709b67c984f0a6b0abe8afd') '6f1d9b6a119bfab150a0bc1f550609dd9290328df709b67c984f0a6b0abe8afd'
'92b8755030d405fa4a9cd31cbe2998fd71584164431e5edc28c2be04fab24d1e')
_kernelname=${pkgbase#linux} _kernelname=${pkgbase#linux}
@ -52,6 +54,9 @@ prepare() {
# https://bugs.archlinux.org/task/56207 # https://bugs.archlinux.org/task/56207
patch -Np1 -i ../0001-platform-x86-hp-wmi-Fix-tablet-mode-detection-for-co.patch patch -Np1 -i ../0001-platform-x86-hp-wmi-Fix-tablet-mode-detection-for-co.patch
# https://bugs.archlinux.org/task/56404
patch -Np1 -i ../0001-bio-ensure-__bio_clone_fast-copies-bi_partno.patch
cp -Tf ../config .config cp -Tf ../config .config
if [ "${_kernelname}" != "" ]; then if [ "${_kernelname}" != "" ]; then