Fix possible inconsistencies for sys_memory mem stats report

This commit is contained in:
Eladash 2019-07-04 21:27:06 +03:00 committed by Ivan
parent ad10eb391e
commit 4c2fb54b99
2 changed files with 19 additions and 2 deletions

View file

@ -514,9 +514,15 @@ namespace vm
bool check_addr(u32 addr, u32 size, u8 flags)
{
for (u32 i = addr / 4096; i <= (addr + size - 1) / 4096; i++)
// Overflow checking
if (addr + size < addr && (addr + size) != 0)
{
if (UNLIKELY((g_pages[i % g_pages.size()].flags & flags) != flags))
return false;
}
for (u32 i = addr / 4096, max = (addr + size - 1) / 4096; i <= max; i++)
{
if (UNLIKELY((g_pages[i].flags & flags) != flags))
{
return false;
}