Messages in this thread | | | From | Rusty Russell <> | Subject | Re: [PATCH 0/2] incorrect cpumask behavior with CPUMASK_OFFSTACK | Date | Mon, 02 Mar 2015 21:58:03 +1030 |
| |
Oleg Drokin <green@linuxhacker.ru> writes: >>> The second patch that I am not sure if we wnat, but it seems to be useful >>> until struct cpumask is fully dynamic is to convert what looks like >>> whole-set operations e.g. copies, namely: >>> cpumask_setall, cpumask_clear, cpumask_copy to always operate on NR_CPUS >>> bits to ensure there's no stale garbage left in the mask should the >>> cpu count increases later. >> You can't do this, because dynamically allocated cpumasks don't have >> NR_CPUS bits. > > Well, right now they certainly have. As in, it's a static define and we allocate > a bitmap to fit the (in my case) up to 8192 bits into such off-stack masks.
You're right, we should fix that properly. Right now, cpumask_size() has:
/* FIXME: Once all cpumask assignments are eliminated, this * can be nr_cpumask_bits */ return BITS_TO_LONGS(NR_CPUS) * sizeof(long);
>> Let's just kill all the cpus_ functions. This wasn't done originally >> because archs which didn't care about offline cpumasks didn't want the >> churn. In particular, they must not copy struct cpumask by assignment, >> and fixing those is a fair bit of churn. > > Ah, copy masks by assignment, I see. > Well, I guess we can eliminate the users outside of the affected arch trees > (I assume in x86 there would be no objections?) and perhaps add a warning to > checkpatch.pl?
OK... I have done a sweep. It's not *that* bad with spatch.
I'm going to remove all the old functions. Expect a series RSN.
Cheers, Rusty.
| |