[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20190205192733.b4bd98988d1e4695f740d445@gmail.com>
Date: Tue, 5 Feb 2019 19:27:33 -0700
From: Paul Zimmerman <pauldzim@...il.com>
To: Joe Perches <joe@...ches.com>
Cc: Eric Dumazet <eric.dumazet@...il.com>,
Heiner Kallweit <hkallweit1@...il.com>,
David Miller <davem@...emloft.net>,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 2/2] r8169: Avoid pointer aliasing
On Tue, 2019-02-05, Joe Perches wrote:
> On Tue, 2019-02-05 at 12:04 -0800, Eric Dumazet wrote:
>>
>> On 02/05/2019 10:42 AM, Joe Perches wrote:
>> > It's declared after a pointer so it is already is 2 byte aligned.
>> >
>> > A lot of drivers wouldn't work otherwise.
>>
>> Maybe these drivers are only used on arches where this does not matter.
>
> Possible.
>
> I had only grepped through the sources looking for
> declarations using:
>
> $ git grep -B1 '\[ETH_ALEN\];' -- '*.c' | grep -A1 '\*'
>
> It's quite a few files in net/ too btw.
>
> I still think adding __align(<even#>) is unnecessary here unless
> it follows something like a bool or a u8.
Um, guys, this is practically C-101.
>From C99, 6.7.2.1:
> 13/ Within a structure object, the non-bit-field members and the units in
> which bit-fields reside have addresses that increase in the order in which
> they are declared. A pointer to a structure object, suitably converted,
> points to its initial member (or if that member is a bit-field, then to the
> unit in which it resides), and vice versa. There may be unnamed padding
> within a structure object, but not at its beginning.
AFAIK there is no such language in the spec regarding variable layout on
the stack. So Joe, you are totally off-base here.
-- Paul
Powered by blists - more mailing lists