diff options
Diffstat (limited to 'mm/mempool.c')
| -rw-r--r-- | mm/mempool.c | 12 | 
1 files changed, 7 insertions, 5 deletions
diff --git a/mm/mempool.c b/mm/mempool.c index d9049811f35..54990476c04 100644 --- a/mm/mempool.c +++ b/mm/mempool.c @@ -63,19 +63,21 @@ EXPORT_SYMBOL(mempool_destroy);  mempool_t *mempool_create(int min_nr, mempool_alloc_t *alloc_fn,  				mempool_free_t *free_fn, void *pool_data)  { -	return  mempool_create_node(min_nr,alloc_fn,free_fn, pool_data,-1); +	return mempool_create_node(min_nr,alloc_fn,free_fn, pool_data, +				   GFP_KERNEL, NUMA_NO_NODE);  }  EXPORT_SYMBOL(mempool_create);  mempool_t *mempool_create_node(int min_nr, mempool_alloc_t *alloc_fn, -			mempool_free_t *free_fn, void *pool_data, int node_id) +			       mempool_free_t *free_fn, void *pool_data, +			       gfp_t gfp_mask, int node_id)  {  	mempool_t *pool; -	pool = kmalloc_node(sizeof(*pool), GFP_KERNEL | __GFP_ZERO, node_id); +	pool = kmalloc_node(sizeof(*pool), gfp_mask | __GFP_ZERO, node_id);  	if (!pool)  		return NULL;  	pool->elements = kmalloc_node(min_nr * sizeof(void *), -					GFP_KERNEL, node_id); +				      gfp_mask, node_id);  	if (!pool->elements) {  		kfree(pool);  		return NULL; @@ -93,7 +95,7 @@ mempool_t *mempool_create_node(int min_nr, mempool_alloc_t *alloc_fn,  	while (pool->curr_nr < pool->min_nr) {  		void *element; -		element = pool->alloc(GFP_KERNEL, pool->pool_data); +		element = pool->alloc(gfp_mask, pool->pool_data);  		if (unlikely(!element)) {  			mempool_destroy(pool);  			return NULL;  |