On 6/9/20 3:06 PM, Peter Zijlstra wrote: > On Tue, Jun 09, 2020 at 02:38:29PM -0700, Eric Biggers wrote: >> Does the struct actually have to be named? How about: >> >> diff --git a/include/linux/sched.h b/include/linux/sched.h >> index c5d96e3e7fff42..14ca25cda19150 100644 >> --- a/include/linux/sched.h >> +++ b/include/linux/sched.h >> @@ -653,8 +653,14 @@ struct task_struct { >> unsigned int ptrace; >> >> #ifdef CONFIG_SMP >> - struct llist_node wake_entry; >> - unsigned int wake_entry_type; >> + /* >> + * wake_entry_type must follow wake_entry, even when >> + * CONFIG_GCC_PLUGIN_RANDSTRUCT=y. >> + */ >> + struct { >> + struct llist_node wake_entry; >> + unsigned int wake_entry_type; >> + }; >> int on_cpu; >> #ifdef CONFIG_THREAD_INFO_IN_TASK >> /* Current CPU: */ >> >> >> However, it would be preferable to not rely on different structs sharing the >> same field order, but rather write proper C code that uses the same struct >> everywhere to encapsulate these 2 fields... > > https://lkml.kernel.org/r/20200605093704.gb2...@hirez.programming.kicks-ass.net > > And I have more patches on top to clean up some of the anonymous union > stuff, that that's quite a lot of frobbing. >
That is why I tried to keep it simple as hackish fixup patch. Guenter