[dpdk-stable] [PATCH 2/5] bpf: fix add/sub min/max estimations
Konstantin Ananyev
konstantin.ananyev at intel.com
Mon May 18 17:52:42 CEST 2020
eval_add()/eval_sub() not always correctly estimate
minimum and maximum possible values of add/sub operations.
Fixes: 8021917293d0 ("bpf: add extra validation for input BPF program")
Cc: stable at dpdk.org
Signed-off-by: Konstantin Ananyev <konstantin.ananyev at intel.com>
---
lib/librte_bpf/bpf_validate.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/lib/librte_bpf/bpf_validate.c b/lib/librte_bpf/bpf_validate.c
index 6bd6f78e9..80d21fabb 100644
--- a/lib/librte_bpf/bpf_validate.c
+++ b/lib/librte_bpf/bpf_validate.c
@@ -226,7 +226,7 @@ eval_add(struct bpf_reg_val *rd, const struct bpf_reg_val *rs, uint64_t msk)
struct bpf_reg_val rv;
rv.u.min = (rd->u.min + rs->u.min) & msk;
- rv.u.max = (rd->u.min + rs->u.max) & msk;
+ rv.u.max = (rd->u.max + rs->u.max) & msk;
rv.s.min = (rd->s.min + rs->s.min) & msk;
rv.s.max = (rd->s.max + rs->s.max) & msk;
@@ -254,10 +254,10 @@ eval_sub(struct bpf_reg_val *rd, const struct bpf_reg_val *rs, uint64_t msk)
{
struct bpf_reg_val rv;
- rv.u.min = (rd->u.min - rs->u.min) & msk;
- rv.u.max = (rd->u.min - rs->u.max) & msk;
- rv.s.min = (rd->s.min - rs->s.min) & msk;
- rv.s.max = (rd->s.max - rs->s.max) & msk;
+ rv.u.min = (rd->u.min - rs->u.max) & msk;
+ rv.u.max = (rd->u.max - rs->u.min) & msk;
+ rv.s.min = (rd->s.min - rs->s.max) & msk;
+ rv.s.max = (rd->s.max - rs->s.min) & msk;
/*
* if at least one of the operands is not constant,
--
2.17.1
More information about the stable
mailing list