Files
i2som-imx-linux/include/uapi/linux
Martin KaFai Lau 78958fca7e bpf: btf: Introduce BTF ID
This patch gives an ID to each loaded BTF.  The ID is allocated by
the idr like the existing prog-id and map-id.

The bpf_put(map->btf) is moved to __bpf_map_put() so that the
userspace can stop seeing the BTF ID ASAP when the last BTF
refcnt is gone.

It also makes BTF accessible from userspace through the
1. new BPF_BTF_GET_FD_BY_ID command.  It is limited to CAP_SYS_ADMIN
   which is inline with the BPF_BTF_LOAD cmd and the existing
   BPF_[MAP|PROG]_GET_FD_BY_ID cmd.
2. new btf_id (and btf_key_id + btf_value_id) in "struct bpf_map_info"

Once the BTF ID handler is accessible from userspace, freeing a BTF
object has to go through a rcu period.  The BPF_BTF_GET_FD_BY_ID cmd
can then be done under a rcu_read_lock() instead of taking
spin_lock.
[Note: A similar rcu usage can be done to the existing
       bpf_prog_get_fd_by_id() in a follow up patch]

When processing the BPF_BTF_GET_FD_BY_ID cmd,
refcount_inc_not_zero() is needed because the BTF object
could be already in the rcu dead row .  btf_get() is
removed since its usage is currently limited to btf.c
alone.  refcount_inc() is used directly instead.

Signed-off-by: Martin KaFai Lau <kafai@fb.com>
Acked-by: Alexei Starovoitov <ast@fb.com>
Acked-by: Song Liu <songliubraving@fb.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
2018-05-09 17:25:13 +02:00
..
2018-05-09 17:25:13 +02:00
2018-04-23 11:32:01 +02:00
2018-02-23 14:29:59 +00:00
2018-04-17 13:53:13 -04:00
2018-05-03 15:55:25 -07:00
2018-04-11 10:28:37 -07:00
2018-03-05 10:43:37 -05:00
2018-02-06 22:53:56 +00:00
2018-03-20 03:17:41 +02:00
2018-04-14 11:59:31 -04:00
2018-04-11 10:28:37 -07:00
2018-04-11 10:28:37 -07:00
2018-04-19 13:05:16 -04:00
2018-03-23 12:25:54 -04:00
2018-04-26 15:08:04 -04:00
2018-02-06 18:32:44 -08:00
2018-03-26 13:22:58 -06:00