X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/df61e9d0fec3d5e75820e27e7a2459d132364585..191737e1350a125739697af304730a0028ca01d5:/lunaix-os/kernel/mm/valloc.c diff --git a/lunaix-os/kernel/mm/valloc.c b/lunaix-os/kernel/mm/valloc.c index 631f39e..02384ef 100644 --- a/lunaix-os/kernel/mm/valloc.c +++ b/lunaix-os/kernel/mm/valloc.c @@ -67,13 +67,26 @@ valloc(unsigned int size) } void* -vcalloc(unsigned int size) +vzalloc(unsigned int size) { void* ptr = __valloc(size, &piles); memset(ptr, 0, size); return ptr; } +void* +vcalloc(unsigned int size, unsigned int count) +{ + unsigned int alloc_size; + if (__builtin_umul_overflow(size, count, &alloc_size)) { + return 0; + } + + void* ptr = __valloc(alloc_size, &piles); + memset(ptr, 0, alloc_size); + return ptr; +} + void vfree(void* ptr) { @@ -87,7 +100,7 @@ valloc_dma(unsigned int size) } void* -vcalloc_dma(unsigned int size) +vzalloc_dma(unsigned int size) { void* ptr = __valloc(size, &piles_dma); memset(ptr, 0, size);