提交 5560032e 编写于 作者: P Pedro Tammela 提交者: Zheng Zengkai

libbpf: Avoid inline hint definition from 'linux/stddef.h'

mainline inclusion
from mainline-5.13-rc1
commit 0205e9de
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5EUVD
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0205e9de42911404902728911b03fc1469242419

-------------------------------------------------

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.

This change now enforces the proper definition for BPF programs
regardless of the include order.
Signed-off-by: NPedro Tammela <pctammela@gmail.com>
Signed-off-by: NAndrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20210314173839.457768-1-pctammela@gmail.com
(cherry picked from commit 0205e9de)
Signed-off-by: NWang Yufen <wangyufen@huawei.com>
上级 6173aa6e
...@@ -29,9 +29,10 @@ ...@@ -29,9 +29,10 @@
*/ */
#define SEC(NAME) __attribute__((section(NAME), used)) #define SEC(NAME) __attribute__((section(NAME), used))
#ifndef __always_inline /* Avoid 'linux/stddef.h' definition of '__always_inline'. */
#undef __always_inline
#define __always_inline inline __attribute__((always_inline)) #define __always_inline inline __attribute__((always_inline))
#endif
#ifndef __noinline #ifndef __noinline
#define __noinline __attribute__((noinline)) #define __noinline __attribute__((noinline))
#endif #endif
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册