ihk_pagealloc_free(): report double-free in bitmap based allocator

This commit is contained in:
Balazs Gerofi
2017-07-07 07:47:29 +09:00
parent da7421e8ee
commit 8426cf589a

View File

@ -228,7 +228,14 @@ void ihk_pagealloc_free(void *__desc, unsigned long address, int npages)
mcs_lock_lock(&desc->lock, &node);
mi = (address - desc->start) >> desc->shift;
for (i = 0; i < npages; i++, mi++) {
desc->map[MAP_INDEX(mi)] &= ~(1UL << MAP_BIT(mi));
if (!(desc->map[MAP_INDEX(mi)] & (1UL << MAP_BIT(mi)))) {
kprintf("%s: double-freeing page 0x%lx\n",
__FUNCTION__, address + i * PAGE_SIZE);
panic("panic");
}
else {
desc->map[MAP_INDEX(mi)] &= ~(1UL << MAP_BIT(mi));
}
}
mcs_lock_unlock(&desc->lock, &node);
}