* [dpdk-stable] [PATCH 1/5] test/bpf: fix few small issues
[not found] <20200518155245.11380-1-konstantin.ananyev@intel.com>
@ 2020-05-18 15:52 ` Konstantin Ananyev
2020-06-24 21:33 ` Thomas Monjalon
2020-05-18 15:52 ` [dpdk-stable] [PATCH 2/5] bpf: fix add/sub min/max estimations Konstantin Ananyev
[not found] ` <20200527141653.15576-1-konstantin.ananyev@intel.com>
2 siblings, 1 reply; 5+ messages in thread
From: Konstantin Ananyev @ 2020-05-18 15:52 UTC (permalink / raw)
To: dev; +Cc: stephen, jerinj, Konstantin Ananyev, stable
Address for few small issues:
- unreachable return statement
- failed test-case can finish with 'success' status
Also use unified cmp_res() function to check return value.
Fixes: a9de470cc7c0 ("test: move to app directory")
Cc: stable@dpdk.org
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
---
app/test/test_bpf.c | 41 +++++++++++++++--------------------------
1 file changed, 15 insertions(+), 26 deletions(-)
diff --git a/app/test/test_bpf.c b/app/test/test_bpf.c
index ee534687a..4a61a7d7c 100644
--- a/app/test/test_bpf.c
+++ b/app/test/test_bpf.c
@@ -1797,13 +1797,6 @@ test_call1_check(uint64_t rc, const void *arg)
dummy_func1(arg, &v32, &v64);
v64 += v32;
- if (v64 != rc) {
- printf("%s@%d: invalid return value "
- "expected=0x%" PRIx64 ", actual=0x%" PRIx64 "\n",
- __func__, __LINE__, v64, rc);
- return -1;
- }
- return 0;
return cmp_res(__func__, v64, rc, dv, dv, sizeof(*dv));
}
@@ -1934,13 +1927,7 @@ test_call2_check(uint64_t rc, const void *arg)
dummy_func2(&a, &b);
v = a.u64 + a.u32 + b.u16 + b.u8;
- if (v != rc) {
- printf("%s@%d: invalid return value "
- "expected=0x%" PRIx64 ", actual=0x%" PRIx64 "\n",
- __func__, __LINE__, v, rc);
- return -1;
- }
- return 0;
+ return cmp_res(__func__, v, rc, arg, arg, 0);
}
static const struct rte_bpf_xsym test_call2_xsym[] = {
@@ -2429,7 +2416,6 @@ test_call5_check(uint64_t rc, const void *arg)
v = 0;
fail:
-
return cmp_res(__func__, v, rc, &v, &rc, sizeof(v));
}
@@ -2458,6 +2444,7 @@ static const struct rte_bpf_xsym test_call5_xsym[] = {
},
};
+/* all bpf test cases */
static const struct bpf_test tests[] = {
{
.name = "test_store1",
@@ -2738,7 +2725,6 @@ run_test(const struct bpf_test *tst)
}
tst->prepare(tbuf);
-
rc = rte_bpf_exec(bpf, tbuf);
ret = tst->check_result(rc, tbuf);
if (ret != 0) {
@@ -2746,17 +2732,20 @@ run_test(const struct bpf_test *tst)
__func__, __LINE__, tst->name, ret, strerror(ret));
}
+ /* repeat the same test with jit, when possible */
rte_bpf_get_jit(bpf, &jit);
- if (jit.func == NULL)
- return 0;
-
- tst->prepare(tbuf);
- rc = jit.func(tbuf);
- rv = tst->check_result(rc, tbuf);
- ret |= rv;
- if (rv != 0) {
- printf("%s@%d: check_result(%s) failed, error: %d(%s);\n",
- __func__, __LINE__, tst->name, rv, strerror(ret));
+ if (jit.func != NULL) {
+
+ tst->prepare(tbuf);
+ rc = jit.func(tbuf);
+ rv = tst->check_result(rc, tbuf);
+ ret |= rv;
+ if (rv != 0) {
+ printf("%s@%d: check_result(%s) failed, "
+ "error: %d(%s);\n",
+ __func__, __LINE__, tst->name,
+ rv, strerror(ret));
+ }
}
rte_bpf_destroy(bpf);
--
2.17.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [dpdk-stable] [PATCH 2/5] bpf: fix add/sub min/max estimations
[not found] <20200518155245.11380-1-konstantin.ananyev@intel.com>
2020-05-18 15:52 ` [dpdk-stable] [PATCH 1/5] test/bpf: fix few small issues Konstantin Ananyev
@ 2020-05-18 15:52 ` Konstantin Ananyev
[not found] ` <20200527141653.15576-1-konstantin.ananyev@intel.com>
2 siblings, 0 replies; 5+ messages in thread
From: Konstantin Ananyev @ 2020-05-18 15:52 UTC (permalink / raw)
To: dev; +Cc: stephen, jerinj, Konstantin Ananyev, stable
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@dpdk.org
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@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
^ permalink raw reply [flat|nested] 5+ messages in thread
* [dpdk-stable] [PATCH v2 1/5] test/bpf: fix few small issues
[not found] ` <20200527141653.15576-1-konstantin.ananyev@intel.com>
@ 2020-05-27 14:16 ` Konstantin Ananyev
2020-05-27 14:16 ` [dpdk-stable] [PATCH v2 2/5] bpf: fix add/sub min/max estimations Konstantin Ananyev
1 sibling, 0 replies; 5+ messages in thread
From: Konstantin Ananyev @ 2020-05-27 14:16 UTC (permalink / raw)
To: dev; +Cc: jerinj, stephen, mb, Konstantin Ananyev, stable
Address for few small issues:
- unreachable return statement
- failed test-case can finish with 'success' status
Also use unified cmp_res() function to check return value.
Fixes: a9de470cc7c0 ("test: move to app directory")
Cc: stable@dpdk.org
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
---
app/test/test_bpf.c | 41 +++++++++++++++--------------------------
1 file changed, 15 insertions(+), 26 deletions(-)
diff --git a/app/test/test_bpf.c b/app/test/test_bpf.c
index ee534687a..4a61a7d7c 100644
--- a/app/test/test_bpf.c
+++ b/app/test/test_bpf.c
@@ -1797,13 +1797,6 @@ test_call1_check(uint64_t rc, const void *arg)
dummy_func1(arg, &v32, &v64);
v64 += v32;
- if (v64 != rc) {
- printf("%s@%d: invalid return value "
- "expected=0x%" PRIx64 ", actual=0x%" PRIx64 "\n",
- __func__, __LINE__, v64, rc);
- return -1;
- }
- return 0;
return cmp_res(__func__, v64, rc, dv, dv, sizeof(*dv));
}
@@ -1934,13 +1927,7 @@ test_call2_check(uint64_t rc, const void *arg)
dummy_func2(&a, &b);
v = a.u64 + a.u32 + b.u16 + b.u8;
- if (v != rc) {
- printf("%s@%d: invalid return value "
- "expected=0x%" PRIx64 ", actual=0x%" PRIx64 "\n",
- __func__, __LINE__, v, rc);
- return -1;
- }
- return 0;
+ return cmp_res(__func__, v, rc, arg, arg, 0);
}
static const struct rte_bpf_xsym test_call2_xsym[] = {
@@ -2429,7 +2416,6 @@ test_call5_check(uint64_t rc, const void *arg)
v = 0;
fail:
-
return cmp_res(__func__, v, rc, &v, &rc, sizeof(v));
}
@@ -2458,6 +2444,7 @@ static const struct rte_bpf_xsym test_call5_xsym[] = {
},
};
+/* all bpf test cases */
static const struct bpf_test tests[] = {
{
.name = "test_store1",
@@ -2738,7 +2725,6 @@ run_test(const struct bpf_test *tst)
}
tst->prepare(tbuf);
-
rc = rte_bpf_exec(bpf, tbuf);
ret = tst->check_result(rc, tbuf);
if (ret != 0) {
@@ -2746,17 +2732,20 @@ run_test(const struct bpf_test *tst)
__func__, __LINE__, tst->name, ret, strerror(ret));
}
+ /* repeat the same test with jit, when possible */
rte_bpf_get_jit(bpf, &jit);
- if (jit.func == NULL)
- return 0;
-
- tst->prepare(tbuf);
- rc = jit.func(tbuf);
- rv = tst->check_result(rc, tbuf);
- ret |= rv;
- if (rv != 0) {
- printf("%s@%d: check_result(%s) failed, error: %d(%s);\n",
- __func__, __LINE__, tst->name, rv, strerror(ret));
+ if (jit.func != NULL) {
+
+ tst->prepare(tbuf);
+ rc = jit.func(tbuf);
+ rv = tst->check_result(rc, tbuf);
+ ret |= rv;
+ if (rv != 0) {
+ printf("%s@%d: check_result(%s) failed, "
+ "error: %d(%s);\n",
+ __func__, __LINE__, tst->name,
+ rv, strerror(ret));
+ }
}
rte_bpf_destroy(bpf);
--
2.17.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [dpdk-stable] [PATCH v2 2/5] bpf: fix add/sub min/max estimations
[not found] ` <20200527141653.15576-1-konstantin.ananyev@intel.com>
2020-05-27 14:16 ` [dpdk-stable] [PATCH v2 1/5] test/bpf: fix few small issues Konstantin Ananyev
@ 2020-05-27 14:16 ` Konstantin Ananyev
1 sibling, 0 replies; 5+ messages in thread
From: Konstantin Ananyev @ 2020-05-27 14:16 UTC (permalink / raw)
To: dev; +Cc: jerinj, stephen, mb, Konstantin Ananyev, stable
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@dpdk.org
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@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
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [dpdk-stable] [PATCH 1/5] test/bpf: fix few small issues
2020-05-18 15:52 ` [dpdk-stable] [PATCH 1/5] test/bpf: fix few small issues Konstantin Ananyev
@ 2020-06-24 21:33 ` Thomas Monjalon
0 siblings, 0 replies; 5+ messages in thread
From: Thomas Monjalon @ 2020-06-24 21:33 UTC (permalink / raw)
To: Konstantin Ananyev; +Cc: dev, stable, stephen, jerinj
18/05/2020 17:52, Konstantin Ananyev:
> Address for few small issues:
> - unreachable return statement
> - failed test-case can finish with 'success' status
>
> Also use unified cmp_res() function to check return value.
>
> Fixes: a9de470cc7c0 ("test: move to app directory")
Looks like you don't want to track the original commits.
In this case, better to not add any fake reference.
> Cc: stable@dpdk.org
>
> Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-06-24 21:33 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <20200518155245.11380-1-konstantin.ananyev@intel.com>
2020-05-18 15:52 ` [dpdk-stable] [PATCH 1/5] test/bpf: fix few small issues Konstantin Ananyev
2020-06-24 21:33 ` Thomas Monjalon
2020-05-18 15:52 ` [dpdk-stable] [PATCH 2/5] bpf: fix add/sub min/max estimations Konstantin Ananyev
[not found] ` <20200527141653.15576-1-konstantin.ananyev@intel.com>
2020-05-27 14:16 ` [dpdk-stable] [PATCH v2 1/5] test/bpf: fix few small issues Konstantin Ananyev
2020-05-27 14:16 ` [dpdk-stable] [PATCH v2 2/5] bpf: fix add/sub min/max estimations Konstantin Ananyev
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).