Using __GFP_ZERO is equivalent to using memset() instead of
cpumask_clear(). It's better to call cpumask_clear() or provide an API
to alloc+clear.
Further, what about the non-MAXSMP case:
static inline bool alloc_cpumask_var(cpumask_var_t *mask, gfp_t flags)
{
return true;
}
We explicity clear on MAXSMP and rely on static initialization for the
non-MAXSMP, laying a neat trap for anyone who makes the variable
non-static. Let's be less subtle that that.
or have zalloc_cpumask_var() ?