[PATCH 2/3] mm: use nodes_and() return value to simplify client code
From: Yury Norov
Date: Wed Jan 14 2026 - 12:22:29 EST
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@xxxxxxxxxx>
---
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