diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-12-22 19:00:25 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-12-22 19:00:25 -0500 |
commit | 24bc3ea5df2e1d89e9d50ecca57c210b87ad61d2 (patch) | |
tree | ac85fbb100151d235aa141fdf4294829a556b1d2 /block | |
parent | 0bee6ec80b92d853d6cad3c35fb5f1dd2d88b8f8 (diff) | |
parent | e8271201462710dbbaa0448b768428606724ca90 (diff) |
Merge branch 'for-linus' of git://git.kernel.dk/linux-block
Pull block layer fixes from Jens Axboe:
"Three small fixes for 4.4 final. Specifically:
- The segment issue fix from Junichi, where the old IO path does a
bio limit split before potentially bouncing the pages. We need to
do that in the right order, to ensure that limitations are met.
- A NVMe surprise removal IO hang fix from Keith.
- A use-after-free in null_blk, introduced by a previous patch in
this series. From Mike Krinkin"
* 'for-linus' of git://git.kernel.dk/linux-block:
null_blk: fix use-after-free error
block: ensure to split after potentially bouncing a bio
NVMe: IO ending fixes on surprise removal
Diffstat (limited to 'block')
-rw-r--r-- | block/blk-core.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/block/blk-core.c b/block/blk-core.c index 3636be469fa2..c487b94c59e3 100644 --- a/block/blk-core.c +++ b/block/blk-core.c | |||
@@ -1689,8 +1689,6 @@ static blk_qc_t blk_queue_bio(struct request_queue *q, struct bio *bio) | |||
1689 | struct request *req; | 1689 | struct request *req; |
1690 | unsigned int request_count = 0; | 1690 | unsigned int request_count = 0; |
1691 | 1691 | ||
1692 | blk_queue_split(q, &bio, q->bio_split); | ||
1693 | |||
1694 | /* | 1692 | /* |
1695 | * low level driver can indicate that it wants pages above a | 1693 | * low level driver can indicate that it wants pages above a |
1696 | * certain limit bounced to low memory (ie for highmem, or even | 1694 | * certain limit bounced to low memory (ie for highmem, or even |
@@ -1698,6 +1696,8 @@ static blk_qc_t blk_queue_bio(struct request_queue *q, struct bio *bio) | |||
1698 | */ | 1696 | */ |
1699 | blk_queue_bounce(q, &bio); | 1697 | blk_queue_bounce(q, &bio); |
1700 | 1698 | ||
1699 | blk_queue_split(q, &bio, q->bio_split); | ||
1700 | |||
1701 | if (bio_integrity_enabled(bio) && bio_integrity_prep(bio)) { | 1701 | if (bio_integrity_enabled(bio) && bio_integrity_prep(bio)) { |
1702 | bio->bi_error = -EIO; | 1702 | bio->bi_error = -EIO; |
1703 | bio_endio(bio); | 1703 | bio_endio(bio); |