Blame SOURCES/rhbz1643997.0023-pr23860-verifier-workaround-be-sure-to-delete-all-mo.patch

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