[PATCH 2/3] mm: use nodes_and() return value to simplify client code

Yury Norov posted 3 patches 3 weeks, 4 days ago
[PATCH 2/3] mm: use nodes_and() return value to simplify client code
Posted by Yury Norov 3 weeks, 4 days ago
establish_demotion_targets() and kernel_migrate_pages() call
node_empty() immediately after calling nodes_and(). Now that
nodes_and() return false if nodemask is empty, drop the latter.

Signed-off-by: Yury Norov <ynorov@nvidia.com>
---
 mm/memory-tiers.c | 3 +--
 mm/mempolicy.c    | 3 +--
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/mm/memory-tiers.c b/mm/memory-tiers.c
index 864811fff409..2cbef49a587d 100644
--- a/mm/memory-tiers.c
+++ b/mm/memory-tiers.c
@@ -475,8 +475,7 @@ static void establish_demotion_targets(void)
 	 */
 	list_for_each_entry_reverse(memtier, &memory_tiers, list) {
 		tier_nodes = get_memtier_nodemask(memtier);
-		nodes_and(tier_nodes, node_states[N_CPU], tier_nodes);
-		if (!nodes_empty(tier_nodes)) {
+		if (nodes_and(tier_nodes, node_states[N_CPU], tier_nodes)) {
 			/*
 			 * abstract distance below the max value of this memtier
 			 * is considered toptier.
diff --git a/mm/mempolicy.c b/mm/mempolicy.c
index 68a98ba57882..92a0bf7619a2 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -1909,8 +1909,7 @@ static int kernel_migrate_pages(pid_t pid, unsigned long maxnode,
 	}
 
 	task_nodes = cpuset_mems_allowed(current);
-	nodes_and(*new, *new, task_nodes);
-	if (nodes_empty(*new))
+	if (!nodes_and(*new, *new, task_nodes))
 		goto out_put;
 
 	err = security_task_movememory(task);
-- 
2.43.0
Re: [PATCH 2/3] mm: use nodes_and() return value to simplify client code
Posted by David Hildenbrand (Red Hat) 3 weeks, 3 days ago
On 1/14/26 18:22, Yury Norov wrote:
> establish_demotion_targets() and kernel_migrate_pages() call
> node_empty() immediately after calling nodes_and(). Now that
> nodes_and() return false if nodemask is empty, drop the latter.
> 
> Signed-off-by: Yury Norov <ynorov@nvidia.com>

Acked-by: David Hildenbrand (Red Hat) <david@kernel.org>

-- 
Cheers

David
Re: [PATCH 2/3] mm: use nodes_and() return value to simplify client code
Posted by Vlastimil Babka 3 weeks, 3 days ago
On 1/14/26 18:22, Yury Norov wrote:
> establish_demotion_targets() and kernel_migrate_pages() call
> node_empty() immediately after calling nodes_and(). Now that
> nodes_and() return false if nodemask is empty, drop the latter.
> 
> Signed-off-by: Yury Norov <ynorov@nvidia.com>

Acked-by: Vlastimil Babka <vbabka@suse.cz>

> ---
>  mm/memory-tiers.c | 3 +--
>  mm/mempolicy.c    | 3 +--
>  2 files changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/mm/memory-tiers.c b/mm/memory-tiers.c
> index 864811fff409..2cbef49a587d 100644
> --- a/mm/memory-tiers.c
> +++ b/mm/memory-tiers.c
> @@ -475,8 +475,7 @@ static void establish_demotion_targets(void)
>  	 */
>  	list_for_each_entry_reverse(memtier, &memory_tiers, list) {
>  		tier_nodes = get_memtier_nodemask(memtier);
> -		nodes_and(tier_nodes, node_states[N_CPU], tier_nodes);
> -		if (!nodes_empty(tier_nodes)) {
> +		if (nodes_and(tier_nodes, node_states[N_CPU], tier_nodes)) {
>  			/*
>  			 * abstract distance below the max value of this memtier
>  			 * is considered toptier.
> diff --git a/mm/mempolicy.c b/mm/mempolicy.c
> index 68a98ba57882..92a0bf7619a2 100644
> --- a/mm/mempolicy.c
> +++ b/mm/mempolicy.c
> @@ -1909,8 +1909,7 @@ static int kernel_migrate_pages(pid_t pid, unsigned long maxnode,
>  	}
>  
>  	task_nodes = cpuset_mems_allowed(current);
> -	nodes_and(*new, *new, task_nodes);
> -	if (nodes_empty(*new))
> +	if (!nodes_and(*new, *new, task_nodes))
>  		goto out_put;
>  
>  	err = security_task_movememory(task);
Re: [PATCH 2/3] mm: use nodes_and() return value to simplify client code
Posted by Gregory Price 3 weeks, 4 days ago
On Wed, Jan 14, 2026 at 12:22:14PM -0500, Yury Norov wrote:
> establish_demotion_targets() and kernel_migrate_pages() call
> node_empty() immediately after calling nodes_and(). Now that
> nodes_and() return false if nodemask is empty, drop the latter.
> 
> Signed-off-by: Yury Norov <ynorov@nvidia.com>

Reviewed-by: Gregory Price <gourry@gourry.net>