On Thu, 23 Nov 2023 at 19:06, Andrey Konovalov <andreyknvl@xxxxxxxxx> wrote: > > 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? Yes, that might be better. As long as other users of mempool (esp if KASAN is disabled) are unaffected then it should be fine.