diff --git a/fix-bounce_end_io.patch b/fix-bounce_end_io.patch new file mode 100644 index 0000000..5a61ca6 --- /dev/null +++ b/fix-bounce_end_io.patch @@ -0,0 +1,42 @@ +From 08df0db0be41e6bea306bcf5b4d325f5a79dc7a1 Mon Sep 17 00:00:00 2001 +From: Ming Lei +Date: Sat, 12 Sep 2015 20:48:42 +0800 +Subject: [PATCH] block: fix bounce_end_io + +When bio bounce is involved, one new bio and its io vector are +cloned from the coming bio, which can be one fast-cloned bio +and its io vector can be shared with another bio too, especially +after bio_split() is introduced. + +So it is obviously wrong to assume the start index of the original +bio's io vector is zero, which can be any value between 0 and +(bi_max_vecs - 1), especially in case of bio split. + +Signed-off-by: Ming Lei +--- + block/bounce.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/block/bounce.c b/block/bounce.c +index 0611aea1cfe9..1cb5dd3a5da1 100644 +--- a/block/bounce.c ++++ b/block/bounce.c +@@ -128,12 +128,14 @@ static void bounce_end_io(struct bio *bio, mempool_t *pool) + struct bio *bio_orig = bio->bi_private; + struct bio_vec *bvec, *org_vec; + int i; ++ int start = bio_orig->bi_iter.bi_idx; + + /* + * free up bounce indirect pages used + */ + bio_for_each_segment_all(bvec, bio, i) { +- org_vec = bio_orig->bi_io_vec + i; ++ org_vec = bio_orig->bi_io_vec + i + start; ++ + if (bvec->bv_page == org_vec->bv_page) + continue; + +-- +2.4.3 + diff --git a/kernel.spec b/kernel.spec index 459e4ee..476167c 100644 --- a/kernel.spec +++ b/kernel.spec @@ -67,7 +67,7 @@ Summary: The Linux kernel # The rc snapshot level %define rcrev 1 # The git snapshot level -%define gitrev 1 +%define gitrev 2 # Set rpm version accordingly %define rpmversion 4.%{upstream_sublevel}.0 %endif @@ -594,6 +594,8 @@ Patch521: x86-alternatives-Make-optimize_nops-interrupt-safe-a.patch #rhbz 1237136 Patch522: block-blkg_destroy_all-should-clear-q-root_blkg-and-.patch +Patch523: fix-bounce_end_io.patch + Patch904: kdbus.patch # END OF PATCH DEFINITIONS @@ -2039,6 +2041,9 @@ fi # # %changelog +* Wed Sep 16 2015 Laura Abbott - 4.3.0-0.rc1.git2.1 +- Linux v4.3-rc1-21-g865ca08 + * Tue Sep 15 2015 Josh Boyer - 4.3.0-0.rc1.git1.1 - Linux v4.3-rc1-19-gd25ed277fbd4 diff --git a/sources b/sources index f5b38f5..a972a5c 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ 3d5ea06d767e2f35c999eeadafc76523 linux-4.2.tar.xz 4c964bfba54d65b5b54cc898baddecad perf-man-4.2.tar.gz 45904fd88e2d6f79693abcce148a12fe patch-4.3-rc1.xz -b1923ca84c3582207a3aadb461abcfb0 patch-4.3-rc1-git1.xz +6a7a5f6a5a8370b9348da0757d23abd7 patch-4.3-rc1-git2.xz