Build error: ../app/test/test_table_tables.c: In function ‘test_table_stub’: ../app/test/test_table_tables.c:31:9: warning: ‘memset’ offset [0, 31] is out of the bounds [0, 0] [-Warray-bounds] memset((uint8_t *)mbuf + sizeof(struct rte_mbuf) + 32, 0, 32); \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../app/test/test_table_tables.c:151:25: note: in expansion of macro ‘PREPARE_PACKET’ 151 | PREPARE_PACKET(mbufs[i], 0xadadadad); | ^~~~~~~~~~~~~~ 'key' points to mbuf header + 32 bytes, and memset clears next 32 bytes of 'key', so overall there needs to be 64 bytes after mbuf header. Adding a mbuf size check before memset. The original code has an assumption that mbuf data buffer follows mbuf header, this patch accepts same assumption. Bugzilla ID: 677 Fixes: 5205954791cb ("app/test: packet framework unit tests") Cc: stable@dpdk.org Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> --- Cc: cristian.dumitrescu@intel.com Cc: Kevin Traynor <ktraynor@redhat.com> Not exactly clear why compiler complains about, compiler can't know the bounds of the memory we try to memset here. But adding a size check seems logic thing to do also fixes the compiler warning. --- app/test/test_table_tables.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/test/test_table_tables.c b/app/test/test_table_tables.c index 1aa269f95d27..4ff6ab16aaaa 100644 --- a/app/test/test_table_tables.c +++ b/app/test/test_table_tables.c @@ -28,7 +28,8 @@ table_test table_tests[] = { APP_METADATA_OFFSET(0)); \ key = RTE_MBUF_METADATA_UINT8_PTR(mbuf, \ APP_METADATA_OFFSET(32)); \ - memset(key, 0, 32); \ + if (mbuf->priv_size + mbuf->buf_len >= 64) \ + memset(key, 0, 32); \ k32 = (uint32_t *) key; \ k32[0] = (value); \ *signature = pipeline_test_hash(key, NULL, 0, 0); \ -- 2.31.1
17/05/2021 17:57, Ferruh Yigit:
> Build error:
> ../app/test/test_table_tables.c: In function ‘test_table_stub’:
> ../app/test/test_table_tables.c:31:9:
> warning: ‘memset’ offset [0, 31] is out of the bounds [0, 0]
> [-Warray-bounds]
> memset((uint8_t *)mbuf + sizeof(struct rte_mbuf) + 32, 0, 32); \
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ../app/test/test_table_tables.c:151:25:
> note: in expansion of macro ‘PREPARE_PACKET’
> 151 | PREPARE_PACKET(mbufs[i], 0xadadadad);
> | ^~~~~~~~~~~~~~
>
> 'key' points to mbuf header + 32 bytes, and memset clears next 32 bytes
> of 'key', so overall there needs to be 64 bytes after mbuf header.
> Adding a mbuf size check before memset.
>
> The original code has an assumption that mbuf data buffer follows mbuf
> header, this patch accepts same assumption.
>
> Bugzilla ID: 677
> Fixes: 5205954791cb ("app/test: packet framework unit tests")
> Cc: stable@dpdk.org
>
> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
> ---
> Cc: cristian.dumitrescu@intel.com
> Cc: Kevin Traynor <ktraynor@redhat.com>
>
> Not exactly clear why compiler complains about, compiler can't know the
> bounds of the memory we try to memset here.
> But adding a size check seems logic thing to do also fixes the compiler
> warning.
Applied, thanks
On 18/05/2021 09:55, Thomas Monjalon wrote: > 17/05/2021 17:57, Ferruh Yigit: >> Build error: >> ../app/test/test_table_tables.c: In function ‘test_table_stub’: >> ../app/test/test_table_tables.c:31:9: >> warning: ‘memset’ offset [0, 31] is out of the bounds [0, 0] >> [-Warray-bounds] >> memset((uint8_t *)mbuf + sizeof(struct rte_mbuf) + 32, 0, 32); \ >> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> ../app/test/test_table_tables.c:151:25: >> note: in expansion of macro ‘PREPARE_PACKET’ >> 151 | PREPARE_PACKET(mbufs[i], 0xadadadad); >> | ^~~~~~~~~~~~~~ >> >> 'key' points to mbuf header + 32 bytes, and memset clears next 32 bytes >> of 'key', so overall there needs to be 64 bytes after mbuf header. >> Adding a mbuf size check before memset. >> >> The original code has an assumption that mbuf data buffer follows mbuf >> header, this patch accepts same assumption. >> >> Bugzilla ID: 677 >> Fixes: 5205954791cb ("app/test: packet framework unit tests") >> Cc: stable@dpdk.org >> >> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> >> --- >> Cc: cristian.dumitrescu@intel.com >> Cc: Kevin Traynor <ktraynor@redhat.com> >> >> Not exactly clear why compiler complains about, compiler can't know the >> bounds of the memory we try to memset here. >> But adding a size check seems logic thing to do also fixes the compiler >> warning. > > Applied, thanks > Was just testing this. fwiw, passing build on F34/gcc11 and LGTM. > >