alignment faults in 3.6

Russell King - ARM Linux linux at
Thu Oct 11 06:32:57 EDT 2012

On Thu, Oct 11, 2012 at 12:22:06PM +0200, Eric Dumazet wrote:
> I took a look, and I dont see why/how gcc could use a ldm instruction
> Doing so assumed the alignment of the structure was 8 bytes, but its
> not.
> Networking stack mandates that IP headers are aligned on 4 bytes
> boundaries, not 8 bytes.

Err, no.  ldm is "load multiple" not "load double".  It loads multiple
32-bit registers, and its requirement for non-faulting behaviour is for
the pointer to be 4 byte aligned.  However, "load double" requires 8
byte alignment.

More information about the linux-arm-kernel mailing list