summaryrefslogtreecommitdiffstats
path: root/debian/patches/bugfix/all/bpf-make-32-64-bounds-propagation-slightly-more-robust.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/bugfix/all/bpf-make-32-64-bounds-propagation-slightly-more-robust.patch')
-rw-r--r--debian/patches/bugfix/all/bpf-make-32-64-bounds-propagation-slightly-more-robust.patch62
1 files changed, 0 insertions, 62 deletions
diff --git a/debian/patches/bugfix/all/bpf-make-32-64-bounds-propagation-slightly-more-robust.patch b/debian/patches/bugfix/all/bpf-make-32-64-bounds-propagation-slightly-more-robust.patch
deleted file mode 100644
index 6eb5c51fa..000000000
--- a/debian/patches/bugfix/all/bpf-make-32-64-bounds-propagation-slightly-more-robust.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From e572ff80f05c33cd0cb4860f864f5c9c044280b6 Mon Sep 17 00:00:00 2001
-From: Daniel Borkmann <daniel@iogearbox.net>
-Date: Wed, 15 Dec 2021 22:28:48 +0000
-Subject: bpf: Make 32->64 bounds propagation slightly more robust
-
-From: Daniel Borkmann <daniel@iogearbox.net>
-
-commit e572ff80f05c33cd0cb4860f864f5c9c044280b6 upstream.
-
-Make the bounds propagation in __reg_assign_32_into_64() slightly more
-robust and readable by aligning it similarly as we did back in the
-__reg_combine_64_into_32() counterpart. Meaning, only propagate or
-pessimize them as a smin/smax pair.
-
-Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
-Reviewed-by: John Fastabend <john.fastabend@gmail.com>
-Acked-by: Alexei Starovoitov <ast@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- kernel/bpf/verifier.c | 24 +++++++++++++++---------
- 1 file changed, 15 insertions(+), 9 deletions(-)
-
---- a/kernel/bpf/verifier.c
-+++ b/kernel/bpf/verifier.c
-@@ -1358,22 +1358,28 @@ static void __reg_bound_offset(struct bp
- reg->var_off = tnum_or(tnum_clear_subreg(var64_off), var32_off);
- }
-
-+static bool __reg32_bound_s64(s32 a)
-+{
-+ return a >= 0 && a <= S32_MAX;
-+}
-+
- static void __reg_assign_32_into_64(struct bpf_reg_state *reg)
- {
- reg->umin_value = reg->u32_min_value;
- reg->umax_value = reg->u32_max_value;
-- /* Attempt to pull 32-bit signed bounds into 64-bit bounds
-- * but must be positive otherwise set to worse case bounds
-- * and refine later from tnum.
-+
-+ /* Attempt to pull 32-bit signed bounds into 64-bit bounds but must
-+ * be positive otherwise set to worse case bounds and refine later
-+ * from tnum.
- */
-- if (reg->s32_min_value >= 0 && reg->s32_max_value >= 0)
-- reg->smax_value = reg->s32_max_value;
-- else
-- reg->smax_value = U32_MAX;
-- if (reg->s32_min_value >= 0)
-+ if (__reg32_bound_s64(reg->s32_min_value) &&
-+ __reg32_bound_s64(reg->s32_max_value)) {
- reg->smin_value = reg->s32_min_value;
-- else
-+ reg->smax_value = reg->s32_max_value;
-+ } else {
- reg->smin_value = 0;
-+ reg->smax_value = U32_MAX;
-+ }
- }
-
- static void __reg_combine_32_into_64(struct bpf_reg_state *reg)