lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Wed, 3 Apr 2024 12:12:31 +0200
From: Alexander Lobakin <aleksander.lobakin@...el.com>
To: Anton Protopopov <aspsk@...valent.com>
CC: Arnd Bergmann <arnd@...db.de>, Naresh Kamboju <naresh.kamboju@...aro.org>,
	open list <linux-kernel@...r.kernel.org>, <lkft-triage@...ts.linaro.org>,
	Linux Regressions <regressions@...ts.linux.dev>, Anders Roxell
	<anders.roxell@...aro.org>, Dan Carpenter <dan.carpenter@...aro.org>, "Daniel
 Borkmann" <daniel@...earbox.net>, David Ahern <dsahern@...nel.org>, "Alexei
 Starovoitov" <ast@...nel.org>, Russell King <rmk+kernel@...linux.org.uk>,
	"Ard Biesheuvel" <ardb@...nel.org>, Linus Walleij <linus.walleij@...aro.org>
Subject: Re: include/linux/build_bug.h:78:41: error: static assertion failed:
 "struct bpf_fib_lookup size check"

From: Anton Protopopov <aspsk@...valent.com>
Date: Wed, 3 Apr 2024 12:09:29 +0200

> On Wed, Apr 3, 2024 at 11:57 AM Anton Protopopov <aspsk@...valent.com> wrote:
>>
>> On Wed, Apr 3, 2024 at 11:39 AM Alexander Lobakin
>> <aleksander.lobakin@...el.com> wrote:
>>>
>>> From: Arnd Bergmann <arnd@...db.de>
>>> Date: Wed, 03 Apr 2024 10:45:36 +0200
>>>
>>>> On Wed, Apr 3, 2024, at 10:10, Anton Protopopov wrote:
>>>>> On Wed, Apr 3, 2024 at 10:03 AM Naresh Kamboju
>>>>> <naresh.kamboju@...aro.org> wrote:
>>>>>>
>>>>>> The arm footbridge_defconfig failed with gcc-13 and gcc-8 on Linux next
>>>>>> starting from next-20240328..next-20240402.
>>>>>>
>>>>>> arm:
>>>>>>   build:
>>>>>>     * gcc-8-footbridge_defconfig - Failed
>>>>>>     * gcc-13-footbridge_defconfig - Failed
>>>>>>
>>>>>> Reported-by: Linux Kernel Functional Testing <lkft@...aro.org>
>>>>>>
>>>>>> In file included from include/linux/bitfield.h:10,
>>>>>>                  from arch/arm/include/asm/ptrace.h:13,
>>>>>>                  from arch/arm/include/asm/processor.h:14,
>>>>>>                  from include/linux/prefetch.h:15,
>>>>>>                  from arch/arm/include/asm/atomic.h:12,
>>>>>>                  from include/linux/atomic.h:7,
>>>>>>                  from net/core/filter.c:20:
>>>>>> include/linux/build_bug.h:78:41: error: static assertion failed:
>>>>>> "struct bpf_fib_lookup size check"
>>>>>>    78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
>>>>>>       |                                         ^~~~~~~~~~~~~~
>>>>>
>>>>> Thanks, I will take a look today
>>>
>>> Naresh,
>>>
>>> Could you please remove that static_assert() and dump bpf_bif_lookup
>>> layout from pahole?
>>>
>>> Anton unionized { smac, dmac } with __u32 mark. On x86_64, the offset of
>>> smac was 52 (aligned to 4) already, so I don't really get what AEABI
>>> does here. IIRC it aligns every structure to 8 bytes?
>>>
>>> Maybe we could just add __attribute__((__packed__))
>>> __attribute__((__aligned__(4))) to that anonymous union at the end.
>>
>> Yeah, I am sending a patch for this right now. Better not to depend on
>> compiler options
> 
> One __packed__ was not enough though. The problem was also with the
> union of two __u16's which is padded to be 32 bits when AEABI=n and
> the whole structure is packed (so total size is 66 in this case).

Hmm, on my setup it's 64 bytes. Since it's UAPI, it always must be of
the same size. There's probably a padding somewhere in the middle.

Also, don't forget to always set __aligned__(4 or 8) together with
__packed__, otherwise the compilers generate terrible code (they assume
the structure alignment is 1 and access to every field can be unaligned).

Thanks,
Olek

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ