From b43a06011e0a4606504391ffb94762276c95610d Mon Sep 17 00:00:00 2001 From: Serhei Makarov Date: Wed, 7 Nov 2018 13:07:51 -0500 Subject: [PATCH 23/32] pr23860 verifier workaround :: be sure to delete all mov rN,rN An apparent bug in the eBPF verifier fails to preserve register state when MOVing a register to itself, marking rN as 'unknown scalar'. Previously bpf-opt.cxx failed to remove spurious MOVs if they were the final instruction in a basic block. This would fail verification if the register holds a pointer. --- bpf-opt.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bpf-opt.cxx b/bpf-opt.cxx index 904b33b46..8b9a6ea60 100644 --- a/bpf-opt.cxx +++ b/bpf-opt.cxx @@ -909,7 +909,7 @@ post_alloc_cleanup (program &p) n = j->next; if (j->is_move() && j->src1->is_reg() - && j->dest->reg() == j->src1->reg() && n) + && j->dest->reg() == j->src1->reg()) { // Delete no-op moves created by partition merging. insn *p = j->prev; -- 2.14.5