]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 4.9
authorSasha Levin <sashal@kernel.org>
Mon, 11 Oct 2021 01:12:30 +0000 (21:12 -0400)
committerSasha Levin <sashal@kernel.org>
Mon, 11 Oct 2021 01:12:30 +0000 (21:12 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-4.9/powerpc-bpf-fix-bpf_mod-when-imm-1.patch [new file with mode: 0644]
queue-4.9/series

diff --git a/queue-4.9/powerpc-bpf-fix-bpf_mod-when-imm-1.patch b/queue-4.9/powerpc-bpf-fix-bpf_mod-when-imm-1.patch
new file mode 100644 (file)
index 0000000..d0e8655
--- /dev/null
@@ -0,0 +1,48 @@
+From d66f20bc9bee7918ac734286fed4436cee22df9c Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 6 Oct 2021 01:55:22 +0530
+Subject: powerpc/bpf: Fix BPF_MOD when imm == 1
+
+From: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
+
+[ Upstream commit 8bbc9d822421d9ac8ff9ed26a3713c9afc69d6c8 ]
+
+Only ignore the operation if dividing by 1.
+
+Fixes: 156d0e290e969c ("powerpc/ebpf/jit: Implement JIT compiler for extended BPF")
+Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
+Tested-by: Johan Almbladh <johan.almbladh@anyfinetworks.com>
+Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
+Acked-by: Song Liu <songliubraving@fb.com>
+Acked-by: Johan Almbladh <johan.almbladh@anyfinetworks.com>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Link: https://lore.kernel.org/r/c674ca18c3046885602caebb326213731c675d06.1633464148.git.naveen.n.rao@linux.vnet.ibm.com
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/powerpc/net/bpf_jit_comp64.c | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/arch/powerpc/net/bpf_jit_comp64.c b/arch/powerpc/net/bpf_jit_comp64.c
+index 888ee95340da..2152ffe4e5ea 100644
+--- a/arch/powerpc/net/bpf_jit_comp64.c
++++ b/arch/powerpc/net/bpf_jit_comp64.c
+@@ -430,8 +430,14 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,
+               case BPF_ALU64 | BPF_DIV | BPF_K: /* dst /= imm */
+                       if (imm == 0)
+                               return -EINVAL;
+-                      else if (imm == 1)
+-                              goto bpf_alu32_trunc;
++                      if (imm == 1) {
++                              if (BPF_OP(code) == BPF_DIV) {
++                                      goto bpf_alu32_trunc;
++                              } else {
++                                      EMIT(PPC_RAW_LI(dst_reg, 0));
++                                      break;
++                              }
++                      }
+                       PPC_LI32(b2p[TMP_REG_1], imm);
+                       switch (BPF_CLASS(code)) {
+-- 
+2.33.0
+
index a2c18c2f22375f9ae36ad32c80d561654e3715d3..7c27c98e20eb05ce2e6c47afaa3c7d0a8e346815 100644 (file)
@@ -16,3 +16,4 @@ netlink-annotate-data-races-around-nlk-bound.patch
 drm-nouveau-debugfs-fix-file-release-memory-leak.patch
 rtnetlink-fix-if_nlmsg_stats_size-under-estimation.patch
 i40e-fix-endless-loop-under-rtnl.patch
+powerpc-bpf-fix-bpf_mod-when-imm-1.patch