kernel: Do not invoke memalign with 0 as the alignment argument.

The memalign() function has special semantics for its arguments
even when -fno-builtin is enabled, it seems (that may be a problem
on Clang's part, however.) The alloc_align attribute, which we apply
to the memalign_etc function, does not seem to have the same problems;
at least its documentation at GCC gives no indication that 0 is not a
legal value to pass.

Change-Id: Ie5ba090b924ac3577775165d20f11f9696be97f3
This commit is contained in:
Augustin Cavalier 2022-04-25 18:14:44 -04:00
parent 8f68daed84
commit 4e16be4fa0
2 changed files with 7 additions and 7 deletions

View File

@ -562,7 +562,7 @@ guarded_heap_realloc(void* address, size_t newSize)
if (oldSize == newSize)
return address;
void* newBlock = memalign(0, newSize);
void* newBlock = malloc(newSize);
if (newBlock == NULL)
return NULL;
@ -974,7 +974,7 @@ realloc(void* address, size_t newSize)
}
if (address == NULL)
return memalign(0, newSize);
return malloc(newSize);
return guarded_heap_realloc(address, newSize);
}

View File

@ -1864,7 +1864,7 @@ heap_realloc(heap_allocator *heap, void *address, void **newAddress,
#endif
// if not, allocate a new chunk of memory
*newAddress = memalign(0, newSize);
*newAddress = malloc(newSize);
T(Reallocate((addr_t)address, (addr_t)*newAddress, newSize));
if (*newAddress == NULL) {
// we tried but it didn't work out, but still the operation is done
@ -2349,7 +2349,7 @@ free_etc(void *address, uint32 flags)
void *
malloc(size_t size)
{
return memalign(0, size);
return memalign_etc(0, size, 0);
}
@ -2410,7 +2410,7 @@ realloc(void *address, size_t newSize)
}
if (address == NULL)
return memalign(0, newSize);
return malloc(newSize);
if (newSize == 0) {
free(address);
@ -2455,7 +2455,7 @@ realloc(void *address, size_t newSize)
}
// have to allocate/copy/free - TODO maybe resize the area instead?
newAddress = memalign(0, newSize);
newAddress = malloc(newSize);
if (newAddress == NULL) {
dprintf("realloc(): failed to allocate new block of %ld bytes\n",
newSize);
@ -2482,7 +2482,7 @@ realloc(void *address, size_t newSize)
void *
calloc(size_t numElements, size_t size)
{
void *address = memalign(0, numElements * size);
void *address = malloc(numElements * size);
if (address != NULL)
memset(address, 0, numElements * size);