projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
3096a73
)
nvme: Fix discard buffer overrun
author
Keith Busch
<
[email protected]
>
Thu, 1 Feb 2018 00:01:58 +0000
(17:01 -0700)
committer
Sagi Grimberg
<
[email protected]
>
Thu, 8 Feb 2018 16:35:55 +0000
(18:35 +0200)
This patch checks the discard range array bounds before setting it in
case the driver gets a badly formed request.
Signed-off-by: Keith Busch <
[email protected]
>
Reviewed-by: Jens Axboe <
[email protected]
>
Signed-off-by: Sagi Grimberg <
[email protected]
>
drivers/nvme/host/core.c
patch
|
blob
|
history
diff --git
a/drivers/nvme/host/core.c
b/drivers/nvme/host/core.c
index 1f9278364196e90d391fb98cff07c6340790ab9e..2fd8688cfa474aa24c402886ce16fb169a451a68 100644
(file)
--- a/
drivers/nvme/host/core.c
+++ b/
drivers/nvme/host/core.c
@@
-518,9
+518,11
@@
static blk_status_t nvme_setup_discard(struct nvme_ns *ns, struct request *req,
u64 slba = nvme_block_nr(ns, bio->bi_iter.bi_sector);
u32 nlb = bio->bi_iter.bi_size >> ns->lba_shift;
- range[n].cattr = cpu_to_le32(0);
- range[n].nlb = cpu_to_le32(nlb);
- range[n].slba = cpu_to_le64(slba);
+ if (n < segments) {
+ range[n].cattr = cpu_to_le32(0);
+ range[n].nlb = cpu_to_le32(nlb);
+ range[n].slba = cpu_to_le64(slba);
+ }
n++;
}