Thread (22 messages) 22 messages, 8 authors, 2012-10-11

Re: alignment faults in 3.6

flat view

From: Arnd Bergmann <arnd@arndb.de>
Date: 2012-10-11 12:28:25
Also in: linux-arm-kernel

Possibly related (same subject, not in this thread)

On Thursday 11 October 2012, Eric Dumazet wrote:
On Thu, 2012-10-11 at 11:32 +0100, Russell King - ARM Linux wrote:
quoted
On Thu, Oct 11, 2012 at 12:22:06PM +0200, Eric Dumazet wrote:
quoted
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.
So if you have an alignment fault, thats because IP header is not
aligned on 4 bytes ?

If so a driver is buggy and must be fixed.

Please send us full stack trace
Rob Herring as the original reporter has dropped off the Cc list, adding
him back.

I assume that the calxeda xgmac driver is the culprit then. It uses
netdev_alloc_skb() rather than netdev_alloc_skb_ip_align() in
xgmac_rx_refill but it is not clear whether it does so intentionally
or by accident.

	Arnd
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help