Re: [PATCH] lib/group_cpus: Fix unsigned expression compared with zero

From: Andrew Morton
Date: Thu Jan 11 2024 - 21:19:40 EST


On Fri, 12 Jan 2024 10:02:50 +0800 Jiapeng Chong <jiapeng.chong@xxxxxxxxxxxxxxxxx> wrote:

> The nr_present and nr_others is defined as unsigned int type,
> if(nr_present < 0) and if(nr_others < 0 )is invalid. At the same time, the
> return value of function __group_cpus_evenly also of type int. so modified
> the types of nr_present and nr_others to int.
>
> lib/group_cpus.c:380 group_cpus_evenly() warn: unsigned 'nr_present' is never less than zero.
> lib/group_cpus.c:396 group_cpus_evenly() warn: unsigned 'nr_others' is never less than zero.
>
> ...
>
> --- a/lib/group_cpus.c
> +++ b/lib/group_cpus.c
> @@ -354,7 +354,8 @@ struct cpumask *group_cpus_evenly(unsigned int numgrps)
> cpumask_var_t *node_to_cpumask __free(free_node_to_cpumask) = alloc_node_to_cpumask();
> struct cpumask *masks __free(kfree) = kcalloc(numgrps, sizeof(*masks), GFP_KERNEL);
> cpumask_var_t npresmsk __free(free_cpumask_var);
> - unsigned int curgrp, nr_present, nr_others;
> + unsigned int curgrp;
> + int nr_present, nr_others;
>
> if (!masks || !node_to_cpumask || !alloc_cpumask_var(&npresmsk, GFP_KERNEL))
> return NULL;

Thanks.

Current mm.git (pushed 3 hours ago) has

int curgrp, nr_present, nr_others;