projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag 'pci-v4.4-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci
[firefly-linux-kernel-4.4.55.git]
/
drivers
/
block
/
brd.c
diff --git
a/drivers/block/brd.c
b/drivers/block/brd.c
index b9794aeeb878cc7a054be313063191399b717159..a5880f4ab40eb069bda60d6403b223d61ff1db80 100644
(file)
--- a/
drivers/block/brd.c
+++ b/
drivers/block/brd.c
@@
-323,7
+323,7
@@
out:
return err;
}
return err;
}
-static
void
brd_make_request(struct request_queue *q, struct bio *bio)
+static
blk_qc_t
brd_make_request(struct request_queue *q, struct bio *bio)
{
struct block_device *bdev = bio->bi_bdev;
struct brd_device *brd = bdev->bd_disk->private_data;
{
struct block_device *bdev = bio->bi_bdev;
struct brd_device *brd = bdev->bd_disk->private_data;
@@
-337,6
+337,9
@@
static void brd_make_request(struct request_queue *q, struct bio *bio)
goto io_error;
if (unlikely(bio->bi_rw & REQ_DISCARD)) {
goto io_error;
if (unlikely(bio->bi_rw & REQ_DISCARD)) {
+ if (sector & ((PAGE_SIZE >> SECTOR_SHIFT) - 1) ||
+ bio->bi_iter.bi_size & PAGE_MASK)
+ goto io_error;
discard_from_brd(brd, sector, bio->bi_iter.bi_size);
goto out;
}
discard_from_brd(brd, sector, bio->bi_iter.bi_size);
goto out;
}
@@
-358,9
+361,10
@@
static void brd_make_request(struct request_queue *q, struct bio *bio)
out:
bio_endio(bio);
out:
bio_endio(bio);
- return;
+ return
BLK_QC_T_NONE
;
io_error:
bio_io_error(bio);
io_error:
bio_io_error(bio);
+ return BLK_QC_T_NONE;
}
static int brd_rw_page(struct block_device *bdev, sector_t sector,
}
static int brd_rw_page(struct block_device *bdev, sector_t sector,