On Wed, Nov 22, 2023 at 6:21 PM Marco Elver <elver@xxxxxxxxxx> wrote: > > On Mon, Nov 06, 2023 at 09:10PM +0100, andrey.konovalov@xxxxxxxxx wrote: > > From: Andrey Konovalov <andreyknvl@xxxxxxxxxx> > > > > Introduce a new mempool_use_prealloc_only API that tells the mempool to > > only use the elements preallocated during the mempool's creation and to > > not attempt allocating new ones. > > > > This API is required to test the KASAN poisoning/unpoisoning functinality > > in KASAN tests, but it might be also useful on its own. > > > > Signed-off-by: Andrey Konovalov <andreyknvl@xxxxxxxxxx> > > --- > > include/linux/mempool.h | 2 ++ > > mm/mempool.c | 27 ++++++++++++++++++++++++--- > > 2 files changed, 26 insertions(+), 3 deletions(-) > > > > diff --git a/include/linux/mempool.h b/include/linux/mempool.h > > index 4aae6c06c5f2..822adf1e7567 100644 > > --- a/include/linux/mempool.h > > +++ b/include/linux/mempool.h > > @@ -18,6 +18,7 @@ typedef struct mempool_s { > > int min_nr; /* nr of elements at *elements */ > > int curr_nr; /* Current nr of elements at *elements */ > > void **elements; > > + bool use_prealloc_only; /* Use only preallocated elements */ > > This increases the struct size from 56 to 64 bytes (64 bit arch). > mempool_t is embedded in lots of other larger structs, and this may > result in some unwanted bloat. > > Is there a way to achieve the same thing without adding a new bool to > the mempool struct? We could split out the part of mempool_alloc that uses preallocated elements without what waiting part and expose it in another API function named something like mempool_alloc_preallocated. Would that be better?