test/mbuf: fix mbuf data content check
Checks
Commit Message
When allocating a mbuf, its data content is most of the time zero'd but
nothing ensures this. This is especially wrong when building with
RTE_MALLOC_DEBUG, where data is poisoned to 0x6b on free.
This test reserves MBUF_TEST_DATA_LEN2 bytes in the mbuf data segment,
and sets this data to 0xcc.
Calling strlen(), the test may try to read more than MBUF_TEST_DATA_LEN2
which has been noticed when memory had been poisoned.
The mbuf data content is checked right after, so we can simply remove
strlen().
Fixes: 7b295dceea07 ("test/mbuf: add unit test cases")
Cc: stable@dpdk.org
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
app/test/test_mbuf.c | 4 ----
1 file changed, 4 deletions(-)
Comments
On Thu, Feb 03, 2022 at 10:39:12AM +0100, David Marchand wrote:
> When allocating a mbuf, its data content is most of the time zero'd but
> nothing ensures this. This is especially wrong when building with
> RTE_MALLOC_DEBUG, where data is poisoned to 0x6b on free.
>
> This test reserves MBUF_TEST_DATA_LEN2 bytes in the mbuf data segment,
> and sets this data to 0xcc.
> Calling strlen(), the test may try to read more than MBUF_TEST_DATA_LEN2
> which has been noticed when memory had been poisoned.
>
> The mbuf data content is checked right after, so we can simply remove
> strlen().
>
> Fixes: 7b295dceea07 ("test/mbuf: add unit test cases")
> Cc: stable@dpdk.org
>
> Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
On Thu, Feb 3, 2022 at 10:47 AM Olivier Matz <olivier.matz@6wind.com> wrote:
>
> On Thu, Feb 03, 2022 at 10:39:12AM +0100, David Marchand wrote:
> > When allocating a mbuf, its data content is most of the time zero'd but
> > nothing ensures this. This is especially wrong when building with
> > RTE_MALLOC_DEBUG, where data is poisoned to 0x6b on free.
> >
> > This test reserves MBUF_TEST_DATA_LEN2 bytes in the mbuf data segment,
> > and sets this data to 0xcc.
> > Calling strlen(), the test may try to read more than MBUF_TEST_DATA_LEN2
> > which has been noticed when memory had been poisoned.
> >
> > The mbuf data content is checked right after, so we can simply remove
> > strlen().
> >
> > Fixes: 7b295dceea07 ("test/mbuf: add unit test cases")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: David Marchand <david.marchand@redhat.com>
> Acked-by: Olivier Matz <olivier.matz@6wind.com>
Applied.
@@ -2031,8 +2031,6 @@ test_pktmbuf_read_from_offset(struct rte_mempool *pktmbuf_pool)
NULL);
if (data_copy == NULL)
GOTO_FAIL("%s: Error in reading packet data!\n", __func__);
- if (strlen(data_copy) != MBUF_TEST_DATA_LEN2 - 5)
- GOTO_FAIL("%s: Incorrect data length!\n", __func__);
for (off = 0; off < MBUF_TEST_DATA_LEN2 - 5; off++) {
if (data_copy[off] != (char)0xcc)
GOTO_FAIL("Data corrupted at offset %u", off);
@@ -2054,8 +2052,6 @@ test_pktmbuf_read_from_offset(struct rte_mempool *pktmbuf_pool)
data_copy = rte_pktmbuf_read(m, hdr_len, 0, NULL);
if (data_copy == NULL)
GOTO_FAIL("%s: Error in reading packet data!\n", __func__);
- if (strlen(data_copy) != MBUF_TEST_DATA_LEN2)
- GOTO_FAIL("%s: Corrupted data content!\n", __func__);
for (off = 0; off < MBUF_TEST_DATA_LEN2; off++) {
if (data_copy[off] != (char)0xcc)
GOTO_FAIL("Data corrupted at offset %u", off);