[PATCH v1] mm/vmscan: fix uninitialized variable in demote_folio_list()

Bing Jiao posted 1 patch 4 weeks, 1 day ago
mm/vmscan.c | 4 ----
1 file changed, 4 deletions(-)
[PATCH v1] mm/vmscan: fix uninitialized variable in demote_folio_list()
Posted by Bing Jiao 4 weeks, 1 day ago
Commit d92027a5f30a6c ("mm/vmscan: select the closest preferred node in
demote_folio_list()") refactored the selection logic for demotion target
nodes. However, it removed the initial assignment of 'target_nid' while
leaving a premature check for 'NUMA_NO_NODE' in place.

Since 'target_nid' is now assigned further down in the function based on
preferred and allowed node masks, the initial check at line 1046 is
redundant.

Remove the redundant check to resolve the compiler warning.

Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202601091037.vUSHeJCH-lkp@intel.com/
Fixes: d92027a5f30a6c ("mm/vmscan: select the closest preferred node in demote_folio_list()")
Signed-off-by: Bing Jiao <bingjiao@google.com>
---
 mm/vmscan.c | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/mm/vmscan.c b/mm/vmscan.c
index 213ee75b3306..590ab3ec1998 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -1044,10 +1044,6 @@ static unsigned int demote_folio_list(struct list_head *demote_folios,
 	if (list_empty(demote_folios))
 		return 0;

-	if (target_nid == NUMA_NO_NODE)
-		/* No lower-tier nodes or nodes were hot-unplugged. */
-		return 0;
-
 	node_get_allowed_targets(pgdat, &allowed_mask);
 	mem_cgroup_node_filter_allowed(memcg, &allowed_mask);
 	if (nodes_empty(allowed_mask))
--
2.52.0.457.g6b5491de43-goog
Re: [PATCH v1] mm/vmscan: fix uninitialized variable in demote_folio_list()
Posted by Bing Jiao 4 weeks, 1 day ago
On Fri, Jan 09, 2026 at 06:06:21AM +0000, Bing Jiao wrote:
> Commit d92027a5f30a6c ("mm/vmscan: select the closest preferred node in
> demote_folio_list()") refactored the selection logic for demotion target
> nodes. However, it removed the initial assignment of 'target_nid' while
> leaving a premature check for 'NUMA_NO_NODE' in place.
>
> Since 'target_nid' is now assigned further down in the function based on
> preferred and allowed node masks, the initial check at line 1046 is
> redundant.
>
> Remove the redundant check to resolve the compiler warning.
>
> Reported-by: kernel test robot <lkp@intel.com>
> Closes: https://lore.kernel.org/oe-kbuild-all/202601091037.vUSHeJCH-lkp@intel.com/
> Fixes: d92027a5f30a6c ("mm/vmscan: select the closest preferred node in demote_folio_list()")
> Signed-off-by: Bing Jiao <bingjiao@google.com>
> ---
>  mm/vmscan.c | 4 ----
>  1 file changed, 4 deletions(-)
>
> diff --git a/mm/vmscan.c b/mm/vmscan.c
> index 213ee75b3306..590ab3ec1998 100644
> --- a/mm/vmscan.c
> +++ b/mm/vmscan.c
> @@ -1044,10 +1044,6 @@ static unsigned int demote_folio_list(struct list_head *demote_folios,
>  	if (list_empty(demote_folios))
>  		return 0;
>
> -	if (target_nid == NUMA_NO_NODE)
> -		/* No lower-tier nodes or nodes were hot-unplugged. */
> -		return 0;
> -
>  	node_get_allowed_targets(pgdat, &allowed_mask);
>  	mem_cgroup_node_filter_allowed(memcg, &allowed_mask);
>  	if (nodes_empty(allowed_mask))
> --

Hi Andrew,

Sorry for bother you again in my patch series.

The fix is a simple removal of a redundant, premature check that
was using 'target_nid' before its new initialization point, which
is reported by the kernel test.

I am not sure whether it is a good idead to send a standalone patch
to fix it. Maybe it is likely easier to process.
However, if you would like replace the series Commit d92027a5f30a6c
("mm/vmscan: select the closest preferred node in demote_folio_list()")
entirely to keep the versioning consistent, I can send an v8 version.

Thanks for your time on this patch series.

Best regards,
Bing Jiao