dev: Fix segfault in flash device

Fix a bug in which the flash device would write out of bounds and
could either trigger a segfault and corrupt the memory of other
objects. This was caused by using pageSize in the place of
pagesPerBlock when running the garbage collector.

Also, added an assert to flag this condition in the future.
This commit is contained in:
Sascha Bischoff 2015-10-29 08:48:25 -04:00
parent 84b3452f67
commit 84c697807f

View file

@ -379,7 +379,8 @@ FlashDevice::remap(uint64_t logic_page_addr)
block = locationTable[logic_page_addr].block * pagesPerBlock;
//assumption: clean will improve locality
for (uint32_t count = 0; count < pageSize; count++) {
for (uint32_t count = 0; count < pagesPerBlock; count++) {
assert(block + count < pagesPerDisk);
locationTable[block + count].page = (block + count) %
pagesPerBlock;
++count;