From 206c0099c0ba5a5a2e7b05adea4945fdad5a6724 Mon Sep 17 00:00:00 2001 From: Jan Alexander Steffens Date: Wed, 22 Nov 2017 09:29:43 +0000 Subject: [PATCH] 4.14.1-2 --- ...re-__bio_clone_fast-copies-bi_partno.patch | 39 +++++++++++++++++++ PKGBUILD | 9 ++++- 2 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 0001-bio-ensure-__bio_clone_fast-copies-bi_partno.patch 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 0000000..c9f4a3a --- /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 +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 +Fixes: 74d46992e0d9 ("block: replace bi_bdev with a gendisk pointer and partitions index") +Reported-by: Pavel Goran +Reported-by: Campbell Steven +Reviewed-by: Coly Li +Reviewed-by: Ming Lei +Cc: # 4.14 +Signed-off-by: Jens Axboe +--- + 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 + diff --git a/PKGBUILD b/PKGBUILD index 23ac22d..f43024e 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -5,7 +5,7 @@ pkgbase=linux # Build stock -ARCH kernel #pkgbase=linux-custom # Build kernel with a different name _srcname=linux-4.14 pkgver=4.14.1 -pkgrel=1 +pkgrel=2 arch=('x86_64') url="https://www.kernel.org/" license=('GPL2') @@ -21,6 +21,7 @@ source=( '90-linux.hook' # pacman hook for initramfs regeneration 'linux.preset' # standard config files for mkinitcpio ramdisk '0001-platform-x86-hp-wmi-Fix-tablet-mode-detection-for-co.patch' + '0001-bio-ensure-__bio_clone_fast-copies-bi_partno.patch' ) validpgpkeys=( 'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds @@ -34,7 +35,8 @@ sha256sums=('f81d59477e90a130857ce18dc02f4fbe5725854911db1e7ba770c7cd350f96a7' 'ae2e95db94ef7176207c690224169594d49445e04249d2499e9d2fbc117a0b21' '75f99f5239e03238f88d1a834c50043ec32b1dc568f2cc291b07d04718483919' 'ad6344badc91ad0630caacde83f7f9b97276f80d26a20619a87952be65492c65' - '6f1d9b6a119bfab150a0bc1f550609dd9290328df709b67c984f0a6b0abe8afd') + '6f1d9b6a119bfab150a0bc1f550609dd9290328df709b67c984f0a6b0abe8afd' + '92b8755030d405fa4a9cd31cbe2998fd71584164431e5edc28c2be04fab24d1e') _kernelname=${pkgbase#linux} @@ -52,6 +54,9 @@ prepare() { # https://bugs.archlinux.org/task/56207 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 if [ "${_kernelname}" != "" ]; then