From: Daniel Borkmann <daniel@iogearbox.net>
To: Pedro Tammela <pctammela@gmail.com>
Cc: Alexei Starovoitov <ast@kernel.org>,
Andrii Nakryiko <andrii@kernel.org>,
Martin KaFai Lau <kafai@fb.com>, Song Liu <songliubraving@fb.com>,
Yonghong Song <yhs@fb.com>,
John Fastabend <john.fastabend@gmail.com>,
KP Singh <kpsingh@kernel.org>,
Nathan Chancellor <nathan@kernel.org>,
Nick Desaulniers <ndesaulniers@google.com>,
netdev@vger.kernel.org, bpf@vger.kernel.org,
linux-kernel@vger.kernel.org, clang-built-linux@googlegroups.com
Subject: Re: [PATCH] libbpf: avoid inline hint definition from 'linux/stddef.h'
Date: Tue, 16 Mar 2021 22:01:40 +0100 [thread overview]
Message-ID: <5083f82b-39fc-9d46-bcd0-3a6be2fc7f98@iogearbox.net> (raw)
In-Reply-To: <20210314173839.457768-1-pctammela@gmail.com>
On 3/14/21 6:38 PM, Pedro Tammela wrote:
> Linux headers might pull 'linux/stddef.h' which defines
> '__always_inline' as the following:
>
> #ifndef __always_inline
> #define __always_inline __inline__
> #endif
>
> This becomes an issue if the program picks up the 'linux/stddef.h'
> definition as the macro now just hints inline to clang.
How did the program end up including linux/stddef.h ? Would be good to
also have some more details on how we got here for the commit desc.
> This change now enforces the proper definition for BPF programs
> regardless of the include order.
>
> Signed-off-by: Pedro Tammela <pctammela@gmail.com>
> ---
> tools/lib/bpf/bpf_helpers.h | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/tools/lib/bpf/bpf_helpers.h b/tools/lib/bpf/bpf_helpers.h
> index ae6c975e0b87..5fa483c0b508 100644
> --- a/tools/lib/bpf/bpf_helpers.h
> +++ b/tools/lib/bpf/bpf_helpers.h
> @@ -29,9 +29,12 @@
> */
> #define SEC(NAME) __attribute__((section(NAME), used))
>
> -#ifndef __always_inline
> +/*
> + * Avoid 'linux/stddef.h' definition of '__always_inline'.
> + */
I think the comment should have more details on 'why' we undef it as in
few months looking at it again, the next question to dig into would be
what was wrong with linux/stddef.h. Providing a better rationale would
be nice for readers here.
> +#undef __always_inline
> #define __always_inline inline __attribute__((always_inline))
> -#endif
> +
> #ifndef __noinline
> #define __noinline __attribute__((noinline))
> #endif
>
next prev parent reply other threads:[~2021-03-16 21:02 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-14 17:38 Pedro Tammela
2021-03-16 21:01 ` Daniel Borkmann [this message]
2021-03-16 21:34 ` Andrii Nakryiko
2021-03-16 21:57 ` Daniel Borkmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5083f82b-39fc-9d46-bcd0-3a6be2fc7f98@iogearbox.net \
--to=daniel@iogearbox.net \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=clang-built-linux@googlegroups.com \
--cc=john.fastabend@gmail.com \
--cc=kafai@fb.com \
--cc=kpsingh@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nathan@kernel.org \
--cc=ndesaulniers@google.com \
--cc=netdev@vger.kernel.org \
--cc=pctammela@gmail.com \
--cc=songliubraving@fb.com \
--cc=yhs@fb.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®