From patchwork Fri Jan 29 22:09:37 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Felix Fietkau X-Patchwork-Id: 44036 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 575C0B7D2F for ; Sat, 30 Jan 2010 09:09:45 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753088Ab0A2WJk (ORCPT ); Fri, 29 Jan 2010 17:09:40 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752645Ab0A2WJk (ORCPT ); Fri, 29 Jan 2010 17:09:40 -0500 Received: from nbd.name ([88.198.39.176]:37611 "EHLO ds10.nbd.name" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752554Ab0A2WJj (ORCPT ); Fri, 29 Jan 2010 17:09:39 -0500 Message-ID: <4B635CA1.8070803@openwrt.org> Date: Fri, 29 Jan 2010 23:09:37 +0100 From: Felix Fietkau User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1.7) Gecko/20100111 Thunderbird/3.0.1 MIME-Version: 1.0 To: netdev@vger.kernel.org CC: Lennert Buytenhek Subject: [PATCH] skbuff: align sk_buff::cb to 64 bit X-Enigmail-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org 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 Cc: stable@kernel.org --- -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html --- 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;