block: nvme-scsi: Catch kcalloc failure
res variable was initialized to -ENOMEM, but it's override by nvme_trans_copy_from_user(). So current code returns 0 if kcalloc fails. Fix it to return proper error code. Signed-off-by: Axel Lin <axel.lin@ingics.com> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
parent
71feb364e7
commit
51ef72bda7
|
@ -2375,7 +2375,7 @@ static int nvme_trans_unmap(struct nvme_ns *ns, struct sg_io_hdr *hdr,
|
|||
struct scsi_unmap_parm_list *plist;
|
||||
struct nvme_dsm_range *range;
|
||||
struct nvme_command c;
|
||||
int i, nvme_sc, res = -ENOMEM;
|
||||
int i, nvme_sc, res;
|
||||
u16 ndesc, list_len;
|
||||
|
||||
list_len = get_unaligned_be16(&cmd[7]);
|
||||
|
@ -2397,8 +2397,10 @@ static int nvme_trans_unmap(struct nvme_ns *ns, struct sg_io_hdr *hdr,
|
|||
}
|
||||
|
||||
range = kcalloc(ndesc, sizeof(*range), GFP_KERNEL);
|
||||
if (!range)
|
||||
if (!range) {
|
||||
res = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
|
||||
for (i = 0; i < ndesc; i++) {
|
||||
range[i].nlb = cpu_to_le32(be32_to_cpu(plist->desc[i].nlb));
|
||||
|
|
Loading…
Reference in New Issue