[TECH TOPIC] Implementing malloc
Matthew Wilcox <[email protected]> Mon, 29 Jun 2026 15:29:42 +0100
| Newsgroups | dev.linux.lists.ksummit |
|---|---|
| Message-ID | <[email protected]> |
malloc() is a standard part of the C library. Yet we force new Linux programmers to learn the difference between vmalloc(), kmalloc() and kvmalloc(). They even have to acquire an understanding of the difference between GFP_KERNEL and GFP_ATOMIC. If they are particularly unlucky, they may have to understand other combinations of GFP flags. This topic proposes that we should implement malloc() and calloc(). Various options will be discussed, their increasing implementation complexity corresponding to utility in a greater range of situations. This will also benefit Rust as we can use the same infrastructure to implement std::alloc. We'll also discuss the semantics of corner cases (fallibility, zero sized allocations, overflowing allocations and very large allocations) as well as out-of-bounds and use-after-free detection.