Re: [tip:mm/pkeys] mm/pkeys: Fix siginfo ABI breakage caused by new u64 field

From: Linus Torvalds
Date: Thu Mar 03 2016 - 12:28:52 EST


On Thu, Mar 3, 2016 at 8:53 AM, tip-bot for Dave Hansen
<tipbot@xxxxxxxxx> wrote:
>
> If u64 has a natural alignment of 8 bytes (this is rare, most 32-bit
> platforms align it to 4 bytes), then the leadup to the _sifields union
> matters:

Side note: I'm not sure that "this is rare" comment is necessarily correct.

I think natural alignment is pretty common, even for 32-bit targets.
x86-32 is I think the exception rather than the rule.

There is some real odd case iirc - embedded m68k, which has some
ridiculous alignment rules. I think it only ever aligns to 16-bit
boundaries.

I do keep coming back to the fact that we should *probably* just do
something like

typedef unsigned long long __attribute__((aligned(8))) __u64;

and then introduce a separate "u64_unaligned" type for all the legacy
cases that depended on 32-bit alignment.

It's horrendously nasty to test, though.

Linus