HomePhabricator

BPF: permit type modifiers for __builtin_btf_type_id() relocation

Authored by yonghong-song on Mar 4 2021, 12:58 PM.

Description

BPF: permit type modifiers for __builtin_btf_type_id() relocation

Lorenz Bauer from Cloudflare tried to use "const struct <name>"
as the type for __builtin_btf_type_id(*(const struct <name>)0, 1)
relocation and hit a llvm BPF fatal error.

https://lore.kernel.org/bpf/a3782f71-3f6b-1e75-17a9-1827822c2030@fb.com/

...
fatal error: error in backend: Empty type name for BTF_TYPE_ID_REMOTE reloc

Currently, we require the debuginfo type itself must have a name.
In this case, the debuginfo type is "const" which points to "struct <name>".
The "const" type does not have a name, hence the above fatal error
will be triggered.

Let us permit "const" and "volatile" type modifiers. We skip modifiers
in some other cases as well like structure member type tracing.
This can aviod the above fatal error.

Differential Revision: https://reviews.llvm.org/D97986

Details

Committed
yonghong-songMar 4 2021, 4:27 PM
Differential Revision
D97986: BPF: permit type modifiers for __builtin_btf_type_id() relocation
Parents
rGcedc53254a5d: Fix clang for header move in LLVM/IR
Branches
Unknown
Tags
Unknown