Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

objpool: fix the overestimation of object pooling metadata size

objpool uses struct objpool_head to store metadata information, and its
cpu_slots member points to an array of pointers that store the addresses
of the percpu ring arrays. However, the memory size allocated during the
initialization of cpu_slots is nr_cpu_ids * sizeof(struct objpool_slot).
On a 64-bit machine, the size of struct objpool_slot is 16 bytes, which is
twice the size of the actual pointer required, and the extra memory is
never be used, resulting in a waste of memory. Therefore, the memory size
required for cpu_slots needs to be corrected.

Link: https://lkml.kernel.org/r/20260202132846.68257-1-zhouwenhao7600@gmail.com
Fixes: b4edb8d2d464 ("lib: objpool added: ring-array based lockless MPMC")
Signed-off-by: zhouwenhao <zhouwenhao7600@gmail.com>
Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
Cc: "Masami Hiramatsu (Google)" <mhiramat@kernel.org>
Cc: Matt Wu <wuqiang.matt@bytedance.com>
Cc: wuqiang.matt <wuqiang.matt@bytedance.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

authored by

zhouwenhao and committed by
Andrew Morton
5ed4b6b3 b2433552

+1 -1
+1 -1
lib/objpool.c
··· 142 142 pool->gfp = gfp & ~__GFP_ZERO; 143 143 pool->context = context; 144 144 pool->release = release; 145 - slot_size = nr_cpu_ids * sizeof(struct objpool_slot); 145 + slot_size = nr_cpu_ids * sizeof(struct objpool_slot *); 146 146 pool->cpu_slots = kzalloc(slot_size, pool->gfp); 147 147 if (!pool->cpu_slots) 148 148 return -ENOMEM;