[PATCH] mm/mempool: Use kmalloc_array_node to replace kmalloc_array

Liu Ye posted 1 patch 1 year ago
mm/mempool.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
[PATCH] mm/mempool: Use kmalloc_array_node to replace kmalloc_array
Posted by Liu Ye 1 year ago
The kmalloc_array call could be replaced with kmalloc_array_node
to allocate memory on a specific NUMA node.

Signed-off-by: Liu Ye <liuye@kylinos.cn>
---
 mm/mempool.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/mm/mempool.c b/mm/mempool.c
index 3223337135d0..51eabcc87177 100644
--- a/mm/mempool.c
+++ b/mm/mempool.c
@@ -328,8 +328,8 @@ int mempool_resize(mempool_t *pool, int new_min_nr)
 	spin_unlock_irqrestore(&pool->lock, flags);
 
 	/* Grow the pool */
-	new_elements = kmalloc_array(new_min_nr, sizeof(*new_elements),
-				     GFP_KERNEL);
+	new_elements = kmalloc_array_node(new_min_nr, sizeof(*new_elements),
+				     GFP_KERNEL, NUMA_NO_NODE);
 	if (!new_elements)
 		return -ENOMEM;
 
-- 
2.25.1
Re: [PATCH] mm/mempool: Use kmalloc_array_node to replace kmalloc_array
Posted by Harry (Hyeonggon) Yoo 1 year ago
On Fri, Feb 07, 2025 at 01:52:13PM +0800, Liu Ye wrote:
> The kmalloc_array call could be replaced with kmalloc_array_node
> to allocate memory on a specific NUMA node.

Why is it useful to replace kmalloc_array() with kmalloc_array_node()
in the code?

> Signed-off-by: Liu Ye <liuye@kylinos.cn>
> ---
>  mm/mempool.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/mm/mempool.c b/mm/mempool.c
> index 3223337135d0..51eabcc87177 100644
> --- a/mm/mempool.c
> +++ b/mm/mempool.c
> @@ -328,8 +328,8 @@ int mempool_resize(mempool_t *pool, int new_min_nr)
>  	spin_unlock_irqrestore(&pool->lock, flags);
>  
>  	/* Grow the pool */
> -	new_elements = kmalloc_array(new_min_nr, sizeof(*new_elements),
> -				     GFP_KERNEL);
> +	new_elements = kmalloc_array_node(new_min_nr, sizeof(*new_elements),
> +				     GFP_KERNEL, NUMA_NO_NODE);

What do you mean by 'allocate memory on a specific NUMA node'
when you pass NUMA_NO_NODE?
It's essentially the same as what kmalloc_array() does.

-- 
Harry
Re: [PATCH] mm/mempool: Use kmalloc_array_node to replace kmalloc_array
Posted by liuye 1 year ago
在 2025/2/7 14:47, Harry (Hyeonggon) Yoo 写道:
> On Fri, Feb 07, 2025 at 01:52:13PM +0800, Liu Ye wrote:
>> The kmalloc_array call could be replaced with kmalloc_array_node
>> to allocate memory on a specific NUMA node.
> 
> Why is it useful to replace kmalloc_array() with kmalloc_array_node()
> in the code?
> 
>> Signed-off-by: Liu Ye <liuye@kylinos.cn>
>> ---
>>  mm/mempool.c | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/mm/mempool.c b/mm/mempool.c
>> index 3223337135d0..51eabcc87177 100644
>> --- a/mm/mempool.c
>> +++ b/mm/mempool.c
>> @@ -328,8 +328,8 @@ int mempool_resize(mempool_t *pool, int new_min_nr)
>>  	spin_unlock_irqrestore(&pool->lock, flags);
>>  
>>  	/* Grow the pool */
>> -	new_elements = kmalloc_array(new_min_nr, sizeof(*new_elements),
>> -				     GFP_KERNEL);
>> +	new_elements = kmalloc_array_node(new_min_nr, sizeof(*new_elements),
>> +				     GFP_KERNEL, NUMA_NO_NODE);
> 
> What do you mean by 'allocate memory on a specific NUMA node'
> when you pass NUMA_NO_NODE?
> It's essentially the same as what kmalloc_array() does.
> 

Yeah, my brain short-circuited. Discard this patch.