I have several problems with this patch series. First, it's a flag day change, which means it isn't bisectable and can't go through linux-next. Secondly, we still can't hide the definition of the cpumask struct as long as they're passed as cpumask_t, so it's going to be hard to find assignments (illegal once we allocate nr_cpu_ids bits rather than NR_CPUS), and on-stack users.

Finally, we end up with code which is slightly more opaque than the current code, with two new typedefs. And that's an ongoing problem.

I took a slightly divergent line with my patch series, and introduced a parallel cpumask system which always passes and returns masks by pointer: