Loading...
Loading...
Kernel memory management skill for Linux mm subsystem. Use when using kmalloc, vmalloc, page allocator, SLUB, or debugging OOM and memory zones. Activates on queries about buddy allocator, kmalloc sizes, vmalloc vs kmalloc, SLUB, memory zones, or kernel OOM.
npx skill4agent add mohitmishra786/low-level-dev-skills kernel-memory-managementskills/kernel/kernel-internalskmallocvmallocget_free_pages/proc/meminfoNeed physically contiguous memory for DMA?
├── Yes → dma_alloc_coherent() or CMA pool
└── No
├── Size ≤ ~128K (arch-dependent) → kmalloc / kzalloc
├── Large or non-contiguous OK → vmalloc / vzalloc
└── Whole pages → alloc_pages() / __get_free_pages()void *buf = kmalloc(size, GFP_KERNEL);
if (!buf)
return -ENOMEM;
/* ... */
kfree(buf);| GFP flag | Context |
|---|---|
| Process context, may sleep |
| IRQ / holding spinlock — smaller pools |
| DMA zone (legacy 32-bit devices) |
/proc/slabinfocat /sys/kernel/slab/*/object_sizevoid *v = vmalloc(size); /* virtually contiguous, physically scattered */
vfree(v);dma_map_*struct page *page = alloc_pages(GFP_KERNEL, order);
void *addr = page_address(page);
__free_pages(page, order);order2^nZONE_DMAZONE_NORMALZONE_MOVABLEinclude/linux/mmzone.hkmallocalloc_pages_node()mbindskills/allocators/numa-programmingcat /proc/meminfo
cat /proc/slabinfo
dmesg | grep -i oomCONFIG_SLUB_DEBUGCONFIG_KASAN/kernel-memory-management Choose allocator for 2 MiB driver ring buffer in process context| Symptom | Cause | Fix |
|---|---|---|
| Exceeds kmalloc limit | Use |
| DMA buffer wrong | Used | |
| OOM killer | Unbounded cache growth | Limit pools; use shrinker |
| Slab corruption | Use-after-free | KASAN; audit |
| Sleeping allocator in atomic | |
skills/kernel/kernel-internalsskills/kernel/device-driversdma_alloc_coherentskills/allocators/custom-allocatorsskills/allocators/numa-programmingskills/runtimes/sanitizers