[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <4B635CA1.8070803@openwrt.org>
Date: Fri, 29 Jan 2010 23:09:37 +0100
From: Felix Fietkau <nbd@...nwrt.org>
To: netdev@...r.kernel.org
CC: Lennert Buytenhek <buytenh@...tstofly.org>
Subject: [PATCH] skbuff: align sk_buff::cb to 64 bit
The alignment requirement for 64-bit load/store instructions on ARM is
implementation defined. Some CPUs (such as Marvell Feroceon) do not
generate an exception, if such an instruction is executed with an
address that is not 64 bit aligned.
In such a case, the Feroceon corrupts adjacent memory, which showed up
in my tests as a crash in the rx path of ath9k that only occured with
CONFIG_XFRM set. This crash happened, because the first field of the
mac80211 rx status info in the cb is an u64, and changing it corrupted
the skb->sp field.
Signed-off-by: Felix Fietkau <nbd@...nwrt.org>
Cc: stable@...nel.org
---
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -329,7 +329,7 @@ struct sk_buff {
* want to keep them across layers you have to do a skb_clone()
* first. This is owned by whoever has the skb queued ATM.
*/
- char cb[48];
+ char cb[48] __attribute__((aligned(8)));
unsigned int len,
data_len;
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists