mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-09-29 08:00:26 +09:00
nvme: Fix potential sign extension issue in nvme_blk_rw()
"lbas" with type "u16" (16 bits, unsigned) is promoted in "lbas << ns->lba_shift" to type "int" (32 bits, signed), then sign-extended to type "unsigned long long" (64 bits, unsigned). If "lbas << ns->lba_shift" is greater than 0x7FFFFFFF, the upper bits of the result will all be 1. Fix it by casting "lbas" to "u32". Reported-by: Coverity (CID: 166730) Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
parent
37d46870b3
commit
52a5690efb
@ -723,7 +723,7 @@ static ulong nvme_blk_rw(struct udevice *udev, lbaint_t blknr,
|
|||||||
&c, NULL, IO_TIMEOUT);
|
&c, NULL, IO_TIMEOUT);
|
||||||
if (status)
|
if (status)
|
||||||
break;
|
break;
|
||||||
temp_len -= lbas << ns->lba_shift;
|
temp_len -= (u32)lbas << ns->lba_shift;
|
||||||
buffer += lbas << ns->lba_shift;
|
buffer += lbas << ns->lba_shift;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user