block: ensure to split after potentially bouncing a bio (Closes: #809082)

This commit is contained in:
Ben Hutchings 2015-12-27 04:18:37 +00:00
parent d6b9e3f082
commit 5db0f0e307
3 changed files with 41 additions and 0 deletions

1
debian/changelog vendored
View File

@ -2,6 +2,7 @@ linux (4.3.3-3) UNRELEASED; urgency=medium
[ Ben Hutchings ]
* [ppc64*] drm: Enable DRM_AST as module (Closes: #808338)
* block: ensure to split after potentially bouncing a bio (Closes: #809082)
[ Salvatore Bonaccorso ]
* ovl: fix permission checking for setattr (CVE-2015-8660)

View File

@ -0,0 +1,39 @@
From: Junichi Nomura <j-nomura@ce.jp.nec.com>
Date: Tue, 22 Dec 2015 10:23:44 -0700
Subject: block: ensure to split after potentially bouncing a bio
Origin: https://git.kernel.org/linus/23688bf4f830a89866fd0ed3501e342a7360fe4f
Bug-Debian: https://bugs.debian.org/809082
blk_queue_bio() does split then bounce, which makes the segment
counting based on pages before bouncing and could go wrong. Move
the split to after bouncing, like we do for blk-mq, and the we
fix the issue of having the bio count for segments be wrong.
Fixes: 54efd50bfd87 ("block: make generic_make_request handle arbitrarily sized bios")
Cc: stable@vger.kernel.org
Tested-by: Artem S. Tashkinov <t.artem@lycos.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
---
block/blk-core.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -1616,8 +1616,6 @@ static void blk_queue_bio(struct request
struct request *req;
unsigned int request_count = 0;
- blk_queue_split(q, &bio, q->bio_split);
-
/*
* low level driver can indicate that it wants pages above a
* certain limit bounced to low memory (ie for highmem, or even
@@ -1625,6 +1623,8 @@ static void blk_queue_bio(struct request
*/
blk_queue_bounce(q, &bio);
+ blk_queue_split(q, &bio, q->bio_split);
+
if (bio_integrity_enabled(bio) && bio_integrity_prep(bio)) {
bio->bi_error = -EIO;
bio_endio(bio);

View File

@ -106,3 +106,4 @@ bugfix/all/vrf-fix-double-free-and-memory-corruption-on-registe.patch
bugfix/all/tipc-fix-kfree_skb-of-uninitialised-pointer.patch
debian/armhf-sparc64-force-zone_dma-to-be-enabled.patch
bugfix/all/ovl-fix-permission-checking-for-setattr.patch
bugfix/all/block-ensure-to-split-after-potentially-bouncing-a-b.patch