mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2025-12-21 12:11:15 +00:00
verifier is using the following structure to track the state of registers:
struct reg_state {
enum bpf_reg_type type;
union {
int imm;
struct bpf_map *map_ptr;
};
};
and later on in states_equal() does memcmp(&old->regs[i], &cur->regs[i],..)
to find equivalent states.
Throughout the code of verifier there are assignements to 'imm' and 'map_ptr'
fields and it's not obvious that most of the assignments into 'imm' don't
need to clear extra 4 bytes (like mark_reg_unknown_value() does) to make sure
that memcmp doesn't go over junk left from 'map_ptr' assignment.
Simplify the code by converting 'int' into 'long'
Suggested-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||
|---|---|---|
| .. | ||
| arraymap.c | ||
| core.c | ||
| hashtab.c | ||
| helpers.c | ||
| inode.c | ||
| Makefile | ||
| percpu_freelist.c | ||
| percpu_freelist.h | ||
| stackmap.c | ||
| syscall.c | ||
| verifier.c | ||