On Fri, Mar 22, 2019 at 5:40 PM Peter Zijlstra <pet...@infradead.org> wrote: > > On Fri, Mar 22, 2019 at 02:58:51PM +0100, Arnd Bergmann wrote: > > On Thu, Mar 21, 2019 at 11:00 PM Andi Kleen <a...@firstfloor.org> wrote: > > > > > > From: Andi Kleen <a...@linux.intel.com> > > > > > > This warning is very noisy in a default build with gcc 9. > > > Move it into W=2 only. > > > > > > Cc: a...@arndb.de > > > Cc: Masahiro Yamada <yamada.masah...@socionext.com> > > > Signed-off-by: Andi Kleen <a...@linux.intel.com> > > > > I think W=2 is too aggressive. On many architectures, this finds > > real bugs and the false positives tend to be trivial to fix > > (by removing the bogus __packed annotation), which improves > > the generated code in the process. > > > > Moving it to W=1 for the moment is probably fine, but ideally > > I think we should fix the kernel to behave according to the > > C standard. > > Lol... we're actively moving away from the C standard on many places. > > Why does the silly compiler think it is a problem to take the address of > a member of a packed structure? That sounds like something that's > perfectly fine and useful.
The problem is casting a pointer of an unaligned variable to one of higher alignment and passing that to a function that does not expect unaligned data. On CPUs that don't have unaligned load/store instructions, this causes an alignment fault, which will have to be fixed up in software by doing a bytewise access or crash the system. Arnd