Skip to content

Commit 9719906

Browse files
committed
Fix underflow bug.
1 parent 809fe1a commit 9719906

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

linux/mm/htmm_migrater.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ static bool need_toptier_demotion(pg_data_t *pgdat, struct mem_cgroup *memcg, un
138138
unsigned long fasttier_max_watermark, fasttier_min_watermark;
139139
int target_nid = htmm_cxl_mode ? 1 : next_demotion_node(pgdat->node_id);
140140
pg_data_t *target_pgdat;
141+
long long nr_exceeded_signed;
141142

142143
if (target_nid == NUMA_NO_NODE)
143144
return false;
@@ -171,7 +172,13 @@ static bool need_toptier_demotion(pg_data_t *pgdat, struct mem_cgroup *memcg, un
171172
return false;
172173
}
173174

174-
*nr_exceeded = nr_lru_pages + nr_need_promoted + fasttier_max_watermark - max_nr_pages;
175+
// *nr_exceeded = nr_lru_pages + nr_need_promoted + fasttier_max_watermark - max_nr_pages;
176+
177+
// Prevent an underflow.
178+
nr_exceeded_signed = (long long)nr_lru_pages + nr_need_promoted +
179+
fasttier_max_watermark - max_nr_pages;
180+
*nr_exceeded = nr_exceeded_signed < 0 ? 0 : nr_exceeded_signed;
181+
175182
return true;
176183
}
177184

0 commit comments

Comments
 (0)