From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933477AbbENU3o (ORCPT ); Thu, 14 May 2015 16:29:44 -0400 Received: from mail-wi0-f169.google.com ([209.85.212.169]:35404 "EHLO mail-wi0-f169.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933019AbbENU3m (ORCPT ); Thu, 14 May 2015 16:29:42 -0400 Message-ID: <555505B3.3030107@gmail.com> Date: Thu, 14 May 2015 22:29:39 +0200 From: Mateusz Kulikowski User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: Dan Carpenter CC: devel@driverdev.osuosl.org, gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v3 03/33] staging: rtl8192e: Mark unaligned memcpy() References: <1431206361-13736-1-git-send-email-mateusz.kulikowski@gmail.com> <1431206361-13736-4-git-send-email-mateusz.kulikowski@gmail.com> <20150511082646.GI14154@mwanda> <55525BCD.5030901@gmail.com> <20150513082254.GQ14154@mwanda> In-Reply-To: <20150513082254.GQ14154@mwanda> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 13.05.2015 10:22, Dan Carpenter wrote: > On Tue, May 12, 2015 at 10:00:13PM +0200, Mateusz Kulikowski wrote: >> On 11.05.2015 10:26, Dan Carpenter wrote: (...) >>> >>> Which part isn't aligned? I think they both are. >>> >> struct rtllib_rxb *prxb = prxbIndicateArray[j]; >> >> struct rtllib_rxb { >> u8 nr_subframes; >> struct sk_buff *subframes[MAX_SUBFRAME_COUNT == 64]; >> u8 dst[ETH_ALEN]; // here >> u8 src[ETH_ALEN]; // here >> } __packed; >> >> Either I forgot alignment / packing rules or this fields are never aligned "by design". > > You must have forgotten something... Everything after the pointer is > going to be aligned sizeof(void *). That would be true, if structure was not __packed: $ pahole drivers/staging/rtl8192e/rtllib.ko -C rtllib_rxb struct rtllib_rxb { u8 nr_subframes; /* 0 1 */ struct sk_buff * subframes[64]; /* 1 256 */ /* --- cacheline 4 boundary (256 bytes) was 1 bytes ago --- */ u8 dst[6]; /* 257 6 */ u8 src[6]; /* 263 6 */ /* size: 269, cachelines: 5, members: 4 */ /* last cacheline: 13 bytes */ }; Am I right? Regards, Mateusz