Messages in this thread | | | Date | Wed, 23 Jul 2014 10:12:35 -0700 | Subject | Re: Random panic in load_balance() with 3.16-rc | From | Linus Torvalds <> |
| |
On Wed, Jul 23, 2014 at 10:03 AM, Peter Zijlstra <peterz@infradead.org> wrote: > On Wed, Jul 23, 2014 at 09:54:23AM -0700, Linus Torvalds wrote: >> >> And I wonder if I have a clue. Look, load_balance_mask is a >> "cpumask_var_t", but I don't see a "alloc_cpumask_var()" for it. >> That's broken with CONFIG_CPUMASK_OFFSTACK. > > kernel/sched/core.c:sched_init() > > plays horrible allocation tricks..
No it does not. It allocates a cpumask. Nothing more. If you think it allocates a "cpumask_var()", you are wrong.
I agree that the code is an unreadable mess, but that's what "cpumask_size()" is: the minimum required size of the bitmask in a cpumask.
A cpumask_var is TOTALLY DIFFERENT. It's *either* a cpumask _or_ just a pointer to an externally allocated cpumask.
sched_init() definitely does _not_ allocate a cpumask_var.
Linus
| |