libc: fix size calculation in 'Mem_alloc_impl::alloc'
When allocating new backing store in 'Mem_alloc_impl::alloc()', the requested alignment needs to be considered in the size calculation. Fixes #973.
This commit is contained in:
parent
ca9ae43e50
commit
bef7086f20
|
@ -187,10 +187,11 @@ void *Libc::Mem_alloc_impl::alloc(size_t size, size_t align_log2)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Calculate block size of needed backing store. The block must hold the
|
* Calculate block size of needed backing store. The block must hold the
|
||||||
* requested 'size' and a new Dataspace structure if the allocation above
|
* requested 'size' with the requested alignment and a new Dataspace
|
||||||
* failed. Finally, we align the size to a 4K page.
|
* structure if the allocation above failed.
|
||||||
|
* Finally, we align the size to a 4K page.
|
||||||
*/
|
*/
|
||||||
size_t request_size = size + 1024;
|
size_t request_size = size + max((1 << align_log2), 1024);
|
||||||
|
|
||||||
if (request_size < _chunk_size*sizeof(umword_t)) {
|
if (request_size < _chunk_size*sizeof(umword_t)) {
|
||||||
request_size = _chunk_size*sizeof(umword_t);
|
request_size = _chunk_size*sizeof(umword_t);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user