mempool.c (942baad211336efefb93a8369478888ab845c450) mempool.c (7a3b835371883558eb63e069d891bd87f562380d)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * linux/mm/mempool.c
4 *
5 * memory buffer pool support. Such pools are mostly used
6 * for guaranteed, deadlock-free memory allocations during
7 * extreme VM load.
8 *

--- 92 unchanged lines hidden (view full) ---

101}
102#endif /* CONFIG_DEBUG_SLAB || CONFIG_SLUB_DEBUG_ON */
103
104static __always_inline void kasan_poison_element(mempool_t *pool, void *element)
105{
106 if (pool->alloc == mempool_alloc_slab || pool->alloc == mempool_kmalloc)
107 kasan_slab_free_mempool(element);
108 else if (pool->alloc == mempool_alloc_pages)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * linux/mm/mempool.c
4 *
5 * memory buffer pool support. Such pools are mostly used
6 * for guaranteed, deadlock-free memory allocations during
7 * extreme VM load.
8 *

--- 92 unchanged lines hidden (view full) ---

101}
102#endif /* CONFIG_DEBUG_SLAB || CONFIG_SLUB_DEBUG_ON */
103
104static __always_inline void kasan_poison_element(mempool_t *pool, void *element)
105{
106 if (pool->alloc == mempool_alloc_slab || pool->alloc == mempool_kmalloc)
107 kasan_slab_free_mempool(element);
108 else if (pool->alloc == mempool_alloc_pages)
109 kasan_free_pages(element, (unsigned long)pool->pool_data, false);
109 kasan_poison_pages(element, (unsigned long)pool->pool_data,
110 false);
110}
111
112static void kasan_unpoison_element(mempool_t *pool, void *element)
113{
114 if (pool->alloc == mempool_alloc_slab || pool->alloc == mempool_kmalloc)
115 kasan_unpoison_range(element, __ksize(element));
116 else if (pool->alloc == mempool_alloc_pages)
111}
112
113static void kasan_unpoison_element(mempool_t *pool, void *element)
114{
115 if (pool->alloc == mempool_alloc_slab || pool->alloc == mempool_kmalloc)
116 kasan_unpoison_range(element, __ksize(element));
117 else if (pool->alloc == mempool_alloc_pages)
117 kasan_alloc_pages(element, (unsigned long)pool->pool_data, false);
118 kasan_unpoison_pages(element, (unsigned long)pool->pool_data,
119 false);
118}
119
120static __always_inline void add_element(mempool_t *pool, void *element)
121{
122 BUG_ON(pool->curr_nr >= pool->min_nr);
123 poison_element(pool, element);
124 kasan_poison_element(pool, element);
125 pool->elements[pool->curr_nr++] = element;

--- 430 unchanged lines hidden ---
120}
121
122static __always_inline void add_element(mempool_t *pool, void *element)
123{
124 BUG_ON(pool->curr_nr >= pool->min_nr);
125 poison_element(pool, element);
126 kasan_poison_element(pool, element);
127 pool->elements[pool->curr_nr++] = element;

--- 430 unchanged lines hidden ---