diff options
Diffstat (limited to 'mm/page_alloc.c')
| -rw-r--r-- | mm/page_alloc.c | 11 | 
1 files changed, 11 insertions, 0 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 474c7e9dd51..17d5f539a9a 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -46,6 +46,7 @@  #include <linux/page-isolation.h>  #include <linux/page_cgroup.h>  #include <linux/debugobjects.h> +#include <linux/kmemleak.h>  #include <asm/tlbflush.h>  #include <asm/div64.h> @@ -4546,6 +4547,16 @@ void *__init alloc_large_system_hash(const char *tablename,  	if (_hash_mask)  		*_hash_mask = (1 << log2qty) - 1; +	/* +	 * If hashdist is set, the table allocation is done with __vmalloc() +	 * which invokes the kmemleak_alloc() callback. This function may also +	 * be called before the slab and kmemleak are initialised when +	 * kmemleak simply buffers the request to be executed later +	 * (GFP_ATOMIC flag ignored in this case). +	 */ +	if (!hashdist) +		kmemleak_alloc(table, size, 1, GFP_ATOMIC); +  	return table;  }  | 
