Message ID | 20180423191102.21348.85601.stgit@john-Precision-Tower-5810 |
---|---|
State | Accepted, archived |
Delegated to: | BPF Maintainers |
Headers | show |
Series | [bpf,1/2] bpf: Document sockmap '-target bpf' requirement for PROG_TYPE_SK_MSG | expand |
On Mon, Apr 23, 2018 at 12:11:02PM -0700, John Fastabend wrote: > BPF_PROG_TYPE_SK_MSG programs use a 'void *' for both data and the > data_end pointers. Additionally, the verifier ensures that every > accesses into the values is a __u64 read. This correctly maps on > to the BPF 64-bit architecture. > > However, to ensure that when building on 32bit architectures that > clang uses correct types the '-target bpf' option _must_ be > specified. To make this clear add a note to the Documentation. > > Signed-off-by: John Fastabend <john.fastabend@gmail.com> Acked-by: Alexei Starovoitov <ast@kernel.org>
Applied both to bpf tree, thanks John!
diff --git a/Documentation/bpf/bpf_devel_QA.txt b/Documentation/bpf/bpf_devel_QA.txt index 1a0b704..da57601 100644 --- a/Documentation/bpf/bpf_devel_QA.txt +++ b/Documentation/bpf/bpf_devel_QA.txt @@ -557,6 +557,14 @@ A: Although LLVM IR generation and optimization try to stay architecture pulls in some header files containing file scope host assembly codes. - You can add "-fno-jump-tables" to work around the switch table issue. - Otherwise, you can use bpf target. + Otherwise, you can use bpf target. Additionally, you _must_ use bpf target + when: + + - Your program uses data structures with pointer or long / unsigned long + types that interface with BPF helpers or context data structures. Access + into these structures is verified by the BPF verifier and may result + in verification failures if the native architecture is not aligned with + the BPF architecture, e.g. 64-bit. An example of this is + BPF_PROG_TYPE_SK_MSG require '-target bpf' Happy BPF hacking!
BPF_PROG_TYPE_SK_MSG programs use a 'void *' for both data and the data_end pointers. Additionally, the verifier ensures that every accesses into the values is a __u64 read. This correctly maps on to the BPF 64-bit architecture. However, to ensure that when building on 32bit architectures that clang uses correct types the '-target bpf' option _must_ be specified. To make this clear add a note to the Documentation. Signed-off-by: John Fastabend <john.fastabend@gmail.com> --- 0 files changed