]> git.baikalelectronics.ru Git - kernel.git/commit
bpf: fix precision bit propagation for BPF_ST instructions
authorAndrii Nakryiko <andriin@fb.com>
Tue, 9 Jul 2019 03:32:44 +0000 (20:32 -0700)
committerDaniel Borkmann <daniel@iogearbox.net>
Fri, 12 Jul 2019 12:48:52 +0000 (14:48 +0200)
commitee2eb5ed21c48128f05339d307049b907a2773e2
tree2c74195e178483c0d55ee60b1544073e7edf1d9c
parent545c83a4bb22adf23be57fb0cae2cdc97e9db5bb
bpf: fix precision bit propagation for BPF_ST instructions

When backtracking instructions to propagate precision bit for registers
and stack slots, one class of instructions (BPF_ST) weren't handled
causing extra stack slots to be propagated into parent state. Parent
state might not have that much stack allocated, though, which causes
warning on invalid stack slot usage.

This patch adds handling of BPF_ST instructions:

BPF_MEM | <size> | BPF_ST:   *(size *) (dst_reg + off) = imm32

Reported-by: syzbot+4da3ff23081bafe74fc2@syzkaller.appspotmail.com
Fixes: 28eac819dbea ("bpf: precise scalar_value tracking")
Cc: Alexei Starovoitov <ast@fb.com>
Signed-off-by: Andrii Nakryiko <andriin@fb.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
kernel/bpf/verifier.c