mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 12:11:40 +00:00
86222a8fc1
In persistent_ram_init_ecc(), on 64-bit arches DIV_ROUND_UP() will return
64-bit value since persistent_ram_zone::buffer_size has type size_t which
is derived from the 64-bit *unsigned long*, while the ecc_blocks variable
this value gets assigned to has (always 32-bit) *int* type. Even if that
value fits into *int* type, an overflow is still possible when calculating
the size_t typed ecc_total variable further below since there's no cast to
any 64-bit type before multiplication. Declaring the ecc_blocks variable
as *size_t* should fix this mess...
Found by Linux Verification Center (linuxtesting.org) with the SVACE static
analysis tool.
Fixes:
|
||
---|---|---|
.. | ||
blk.c | ||
ftrace.c | ||
inode.c | ||
internal.h | ||
Kconfig | ||
Makefile | ||
platform.c | ||
pmsg.c | ||
ram_core.c | ||
ram_internal.h | ||
ram.c | ||
zone.c |