Re: [PATCH v11 03/13] lib/group_cpus: Add group_mask_cpus_evenly()

Marco Crivellari
2026-04-20T13:12:06Z

Hi,

Maybe I'm missing some background here, I noticed group_mask_cpus_evenly()
is called inside irq_create_affinity_masks() and the "numgrps" it is this_vecs
in the latter.

Looking to group_cpus_evenly(), seems it is possible to have this_vecs
equals to 0, indeed this function return NULL if numgrps == 0:

>488 struct cpumask *group_cpus_evenly(unsigned int numgrps, unsigned int *nummasks)
>489 {
>[...]
>495
>496 if (numgrps == 0)
>497 return NULL;

Without it, I guess the kmalloc() in `group_mask_cpus_evenly()` will return ZERO_SIZE_PTR:

>+struct cpumask *group_mask_cpus_evenly(unsigned int numgrps,
>+ const struct cpumask *mask,
>+ unsigned int *nummasks)
>+{
>
> [...]
>
>+ masks = kcalloc(numgrps, sizeof(*masks), GFP_KERNEL);
>+ if (!masks)
>+ goto fail_node_to_cpumask;

and this value is then passed to `__group_cpus_evenly()`.

Should this check be added or it is not needed? Or maybe rely on `ZERO_OR_NULL_PTR()` ?

Thanks!

--

Marco Crivellari

SUSE Labs