Files
linux/kernel
Alexei Starovoitov 3e8ce29850 bpf: Prevent pointer mismatch in bpf_timer_init.
bpf_timer_init() arguments are:
1. pointer to a timer (which is embedded in map element).
2. pointer to a map.
Make sure that pointer to a timer actually belongs to that map.

Use map_uid (which is unique id of inner map) to reject:
inner_map1 = bpf_map_lookup_elem(outer_map, key1)
inner_map2 = bpf_map_lookup_elem(outer_map, key2)
if (inner_map1 && inner_map2) {
    timer = bpf_map_lookup_elem(inner_map1);
    if (timer)
        // mismatch would have been allowed
        bpf_timer_init(timer, inner_map2);
}

Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Martin KaFai Lau <kafai@fb.com>
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Toke Høiland-Jørgensen <toke@redhat.com>
Link: https://lore.kernel.org/bpf/20210715005417.78572-6-alexei.starovoitov@gmail.com
2021-07-15 22:31:10 +02:00
..
2021-06-18 11:43:07 +02:00
2021-06-18 11:43:09 +02:00
2021-07-15 22:31:10 +02:00
2021-06-10 20:59:05 -04:00
2021-04-08 16:04:20 -07:00
2021-06-18 11:43:08 +02:00
2021-06-18 11:43:09 +02:00
2021-05-07 00:26:33 -07:00
2020-11-14 11:26:04 -08:00
2021-06-18 11:43:09 +02:00
2020-12-01 10:30:28 +00:00
2021-06-18 11:43:07 +02:00
2021-02-09 12:27:29 -05:00
2021-05-07 00:26:34 -07:00