Re: [PATCH 0/2] incorrect cpumask behavior with CPUMASK_OFFSTACK

From: Rusty Russell
Date: Mon Mar 02 2015 - 06:42:04 EST


Oleg Drokin <green@xxxxxxxxxxxxxx> 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.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/