On Tue, Apr 18, 2017 at 01:11:10PM +0200, Thomas Gleixner wrote: > +struct tmigr_group { > + raw_spinlock_t lock; > + unsigned int active; > + unsigned int migrator; > + struct timerqueue_head events; > + struct tmigr_event groupevt; > + struct tmigr_group *parent; > + cpumask_var_t cpus; > + struct list_head list; > + unsigned int level; > + unsigned int numa_node; > + unsigned int num_childs; > +};
If you place the cpumask at the end, as a 0 sized array, you can avoid a second allocation.