* [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
* 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
* [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
[parent not found: <20200527141653.15576-1-konstantin.ananyev@intel.com>]
* [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
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).