[PATCH v11 03/13] lib/group_cpus: Add group_mask_cpus_evenly()
Marco Crivellari
marco.crivellari at suse.com
Mon Apr 20 06:11:52 PDT 2026
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
More information about the Linux-nvme
mailing list