forked from luck/tmp_suning_uos_patched
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: d5eff33ee6
("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>
This commit is contained in:
parent
0d3ebdec93
commit
8eacd1bd21
|
@ -246,7 +246,8 @@ static void nvmet_file_execute_discard(struct nvmet_req *req)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
offset = le64_to_cpu(range.slba) << req->ns->blksize_shift;
|
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) {
|
if (offset + len > req->ns->size) {
|
||||||
ret = NVME_SC_LBA_RANGE | NVME_SC_DNR;
|
ret = NVME_SC_LBA_RANGE | NVME_SC_DNR;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user