mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-04-15 18:53:53 +00:00
The kmem_cache_alloc implementation simply allocates new memory from malloc() and calls the ctor, which zeroes out the entire object. This means it cannot spot bugs where the object isn't properly reinitialised before being freed. Add a small (11 objects) cache before freeing objects back to malloc. This is enough to let us write a test to catch it, although the memory allocator is now aware of the structure of the radix tree node, since it chains free objects through ->private_data (like the percpu cache does). Link: http://lkml.kernel.org/r/1481667692-14500-2-git-send-email-mawilcox@linuxonhyperv.com Signed-off-by: Matthew Wilcox <mawilcox@microsoft.com> Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Cc: Konstantin Khlebnikov <koct9i@gmail.com> Cc: Ross Zwisler <ross.zwisler@linux.intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
20 lines
525 B
C
20 lines
525 B
C
#ifndef SLAB_H
|
|
#define SLAB_H
|
|
|
|
#include <linux/types.h>
|
|
|
|
#define SLAB_HWCACHE_ALIGN 1
|
|
#define SLAB_PANIC 2
|
|
#define SLAB_RECLAIM_ACCOUNT 0x00020000UL /* Objects are reclaimable */
|
|
|
|
void *kmalloc(size_t size, gfp_t);
|
|
void kfree(void *);
|
|
|
|
void *kmem_cache_alloc(struct kmem_cache *cachep, int flags);
|
|
void kmem_cache_free(struct kmem_cache *cachep, void *objp);
|
|
|
|
struct kmem_cache *
|
|
kmem_cache_create(const char *name, size_t size, size_t offset,
|
|
unsigned long flags, void (*ctor)(void *));
|
|
|
|
#endif /* SLAB_H */
|