diff options
| author | Alexei Starovoitov <ast@kernel.org> | 2020-02-27 18:50:20 -0800 |
|---|---|---|
| committer | Alexei Starovoitov <ast@kernel.org> | 2020-02-27 18:53:37 -0800 |
| commit | 812285fa5ab129e3a55682314bf235f701564310 (patch) | |
| tree | c46fa77ecfc97e4120c02b7a8bd517e635afc7ee /kernel | |
| parent | d7f10df86202273155a9d8f8553bc2ad28e0dd46 (diff) | |
| parent | 085c20cacf2b72991ce1c9d99a5e2f1d9e73bb68 (diff) | |
Merge branch 'bpf_sk_storage_via_inet_diag'
Martin KaFai Lau says:
====================
The bpf_prog can store specific info to a sk by using bpf_sk_storage.
In other words, a sk can be extended by a bpf_prog.
This series is to support providing bpf_sk_storage data during inet_diag's
dump. The primary target is the usage like iproute2's "ss".
The first two patches are refactoring works in inet_diag to make
adding bpf_sk_storage support easier. The next two patches do
the actual work.
Please see individual patch for details.
v2:
- Add commit message for u16 to u32 change in min_dump_alloc in Patch 4 (Song)
- Add comment to explain the !skb->len check in __inet_diag_dump in Patch 4.
- Do the map->map_type check earlier in Patch 3 for readability.
====================
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/bpf/syscall.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c index a79743a89815..c536c65256ad 100644 --- a/kernel/bpf/syscall.c +++ b/kernel/bpf/syscall.c @@ -902,6 +902,21 @@ void bpf_map_inc_with_uref(struct bpf_map *map) } EXPORT_SYMBOL_GPL(bpf_map_inc_with_uref); +struct bpf_map *bpf_map_get(u32 ufd) +{ + struct fd f = fdget(ufd); + struct bpf_map *map; + + map = __bpf_map_get(f); + if (IS_ERR(map)) + return map; + + bpf_map_inc(map); + fdput(f); + + return map; +} + struct bpf_map *bpf_map_get_with_uref(u32 ufd) { struct fd f = fdget(ufd); |
