diff options
author | Bart Van Assche <bvanassche@acm.org> | 2018-10-08 14:28:52 -0700 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2018-10-17 08:58:27 +0200 |
commit | 8eacd1bd21d6913ec27e6120e9a8733352e191d3 (patch) | |
tree | 135e3d5ab85f31659294bbaab1290e638e149bab /drivers/nvme/target/io-cmd-file.c | |
parent | 0d3ebdec9394c984f3aa59ea97541f2243952b55 (diff) | |
download | talos-op-linux-8eacd1bd21d6913ec27e6120e9a8733352e191d3.tar.gz talos-op-linux-8eacd1bd21d6913ec27e6120e9a8733352e191d3.zip |
nvmet: avoid integer overflow in the discard code
Although I'm not sure whether it is a good idea to support large discard
commands, I think integer overflow for discard ranges larger than 4 GB
should be avoided. This patch avoids that smatch reports the following:
drivers/nvme/target/io-cmd-file.c:249:1 nvmet_file_execute_discard() warn: should '((range.nlb)) << req->ns->blksize_shift' be a 64 bit type?
Fixes: d5eff33ee6f8 ("nvmet: add simple file backed ns support")
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'drivers/nvme/target/io-cmd-file.c')
-rw-r--r-- | drivers/nvme/target/io-cmd-file.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/nvme/target/io-cmd-file.c b/drivers/nvme/target/io-cmd-file.c index 81a9dc5290a8..39d972e2595f 100644 --- a/drivers/nvme/target/io-cmd-file.c +++ b/drivers/nvme/target/io-cmd-file.c @@ -246,7 +246,8 @@ static void nvmet_file_execute_discard(struct nvmet_req *req) break; offset = le64_to_cpu(range.slba) << req->ns->blksize_shift; - len = le32_to_cpu(range.nlb) << req->ns->blksize_shift; + len = le32_to_cpu(range.nlb); + len <<= req->ns->blksize_shift; if (offset + len > req->ns->size) { ret = NVME_SC_LBA_RANGE | NVME_SC_DNR; break; |