diff options
author | Dave Marchevsky <davemarchevsky@fb.com> | 2022-10-20 09:07:18 -0700 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2022-10-21 19:22:42 -0700 |
commit | 9ef40974a82a474321a4c2dd75d395943930c638 (patch) | |
tree | cc77dc523a1ca75655d34f68fecf65e1ad926724 /kernel/bpf | |
parent | 2f97bcd0aa433cbff954e52345d7182f706e020e (diff) | |
download | linux-9ef40974a82a474321a4c2dd75d395943930c638.tar.gz linux-9ef40974a82a474321a4c2dd75d395943930c638.tar.bz2 linux-9ef40974a82a474321a4c2dd75d395943930c638.zip |
bpf: Allow ringbuf memory to be used as map key
This patch adds support for the following pattern:
struct some_data *data = bpf_ringbuf_reserve(&ringbuf, sizeof(struct some_data, 0));
if (!data)
return;
bpf_map_lookup_elem(&another_map, &data->some_field);
bpf_ringbuf_submit(data);
Currently the verifier does not consider bpf_ringbuf_reserve's
PTR_TO_MEM | MEM_ALLOC ret type a valid key input to bpf_map_lookup_elem.
Since PTR_TO_MEM is by definition a valid region of memory, it is safe
to use it as a key for lookups.
Signed-off-by: Dave Marchevsky <davemarchevsky@fb.com>
Acked-by: Yonghong Song <yhs@fb.com>
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/r/20221020160721.4030492-1-davemarchevsky@fb.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'kernel/bpf')
-rw-r--r-- | kernel/bpf/verifier.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 6f6d2d511c06..97351ae3e7a7 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -5641,6 +5641,7 @@ static const struct bpf_reg_types map_key_value_types = { PTR_TO_PACKET_META, PTR_TO_MAP_KEY, PTR_TO_MAP_VALUE, + PTR_TO_MEM | MEM_ALLOC, }, }; |