Message ID | 20210727141119.19812-4-pavo.banicevic@sartura.hr |
---|---|
State | New |
Headers | show |
Series | Address compilation of eBPF related software with clang compiler on arm architecture | expand |
On Tue, Jul 27, 2021 at 04:11:19PM +0200, Pavo Banicevic wrote: > From: Matt Redfearn <matt.redfearn@mips.com> > > Commit bc27fb68aaad ("include/uapi/linux/byteorder, swab: force inlining > of some byteswap operations") added __always_inline to swab functions > and commit 283d75737837 ("uapi/linux/stddef.h: Provide __always_inline to > userspace headers") added a definition of __always_inline for use in > exported headers when the kernel's compiler.h is not available. > > However, since swab.h does not include stddef.h, if the header soup does > not indirectly include it, the definition of __always_inline is missing, > resulting in a compilation failure, which was observed compiling the > perf tool using exported headers containing this commit: > > In file included from /usr/include/linux/byteorder/little_endian.h:12:0, > from /usr/include/asm/byteorder.h:14, > from tools/include/uapi/linux/perf_event.h:20, > from perf.h:8, > from builtin-bench.c:18: > /usr/include/linux/swab.h:160:8: error: unknown type name `__always_inline' > static __always_inline __u16 __swab16p(const __u16 *p) > > Fix this by replacing the inclusion of linux/compiler.h with > linux/stddef.h to ensure that we pick up that definition if required, > without relying on it's indirect inclusion. compiler.h is then included > indirectly, via stddef.h. > > Fixes: 283d75737837 ("uapi/linux/stddef.h: Provide __always_inline to userspace headers") > > Signed-off-by: Matt Redfearn <matt.redfearn@mips.com> > --- I use this patch in order to fix __always_inline issue for kernels 5.12+, see https://lore.kernel.org/lkml/YPGXXt6Z3O1W0AYS@arkam/ . I believe this is the correct solution. Reviewed-by: Petr Vaněk <arkamar@atlas.cz>
diff --git a/include/uapi/linux/swab.h b/include/uapi/linux/swab.h index 7272f85d6d6a..3736f2fe1541 100644 --- a/include/uapi/linux/swab.h +++ b/include/uapi/linux/swab.h @@ -3,7 +3,7 @@ #define _UAPI_LINUX_SWAB_H #include <linux/types.h> -#include <linux/compiler.h> +#include <linux/stddef.h> #include <asm/bitsperlong.h> #include <asm/swab.h>