summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorDaniel Borkmann <daniel@iogearbox.net>2017-08-17 14:59:40 +0200
committerDavid S. Miller <davem@davemloft.net>2017-08-17 10:15:20 -0700
commit1ab2de2bfed3ab2073ed1e7afa2b1134930d2b70 (patch)
tree6c6cc90ce09e7abfe81f2378f7adaa302c079227 /kernel
parentfd07a62d58c16b1fdd46f4099791c5bd242908c3 (diff)
bpf: fix liveness propagation to parent in spilled stack slots
Using parent->regs[] when propagating REG_LIVE_READ for spilled regs doesn't work since parent->regs[] denote the set of normal registers but not spilled ones. Propagate to the correct regs. Fixes: dc503a8ad984 ("bpf/verifier: track liveness for pruning") Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Acked-by: Edward Cree <ecree@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/bpf/verifier.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
index 958ba84a9995..40f669ddb571 100644
--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -3460,7 +3460,7 @@ static bool do_propagate_liveness(const struct bpf_verifier_state *state,
if (parent->spilled_regs[i].live & REG_LIVE_READ)
continue;
if (state->spilled_regs[i].live == REG_LIVE_READ) {
- parent->regs[i].live |= REG_LIVE_READ;
+ parent->spilled_regs[i].live |= REG_LIVE_READ;
touched = true;
}
}