mirror of
https://github.com/genodelabs/genode.git
synced 2025-02-21 02:01:38 +00:00
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
|
||||
* requested 'size' and a new Dataspace structure if the allocation above
|
||||
* failed. Finally, we align the size to a 4K page.
|
||||
* requested 'size' with the requested alignment and a new Dataspace
|
||||
* 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)) {
|
||||
request_size = _chunk_size*sizeof(umword_t);
|
||||
|
Loading…
x
Reference in New Issue
Block a user