mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-11-05 20:35:44 +00:00
hw/nvme: fix narrowing conversion
Since nlbas is of type int, it does not work with large namespace size values, e.g., 9 TB size of file backing namespace and 8 byte metadata with 4096 bytes lbasz gives negative nlbas value, which is later promoted to negative int64_t type value and results in negative ns->moff which breaks namespace Signed-off-by: Dmitry Tikhov <ddtikhov@gmail.com> Reviewed-by: Klaus Jensen <k.jensen@samsung.com> Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
This commit is contained in:
parent
70e975203f
commit
1e64facc01
1 changed files with 3 additions and 2 deletions
|
@ -29,7 +29,8 @@ void nvme_ns_init_format(NvmeNamespace *ns)
|
|||
{
|
||||
NvmeIdNs *id_ns = &ns->id_ns;
|
||||
BlockDriverInfo bdi;
|
||||
int npdg, nlbas, ret;
|
||||
int npdg, ret;
|
||||
int64_t nlbas;
|
||||
|
||||
ns->lbaf = id_ns->lbaf[NVME_ID_NS_FLBAS_INDEX(id_ns->flbas)];
|
||||
ns->lbasz = 1 << ns->lbaf.ds;
|
||||
|
@ -42,7 +43,7 @@ void nvme_ns_init_format(NvmeNamespace *ns)
|
|||
id_ns->ncap = id_ns->nsze;
|
||||
id_ns->nuse = id_ns->ncap;
|
||||
|
||||
ns->moff = (int64_t)nlbas << ns->lbaf.ds;
|
||||
ns->moff = nlbas << ns->lbaf.ds;
|
||||
|
||||
npdg = ns->blkconf.discard_granularity / ns->lbasz;
|
||||
|
||||
|
|
Loading…
Reference in a new issue