All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Hemminger <stephen@networkplumber.org>
To: Maxime Leroy <maxime@leroys.fr>
Cc: hemant.agrawal@nxp.com, dev@dpdk.org
Subject: Re: [PATCH 00/11] net/dpaa2: fixes and improvements
Date: Wed, 18 Feb 2026 09:21:11 -0800	[thread overview]
Message-ID: <20260218092111.695aaf00@phoenix.local> (raw)
In-Reply-To: <20260218160453.142311-1-maxime@leroys.fr>

On Wed, 18 Feb 2026 17:04:42 +0100
Maxime Leroy <maxime@leroys.fr> wrote:

> Various fixes and improvements for the dpaa2 net driver and fslmc bus.
> 
> Patches 1-2, 4-5 fix resource leaks on port close and in error paths.
> 
> Patch 3 fixes a misleading Rx descriptor limit warning.
> 
> Patches 6-7 replace getenv-based configuration with proper devargs
> for taildrop and data stashing options. There are still 8 remaining getenv
> calls in the driver that should be converted to devargs.
> Note: the taildrop disable path has never been reachable until now
> and is untested. NXP maintainers should validate this feature.
> 
> Patch 8 fixes link status not updating after port stop/start when
> link state change interrupts are enabled.
> Patch 9 is a minor cleanup in the same area.
> 
> Patches 10-11 fix devargs propagation on DPNI hotplug.

I decided to ask AI "what remaining bugs are still found by review
after applying these patches"

# dpaa2: remaining issues after Leroy series (v26.03-rc1)

The Leroy 11-patch series covers the resource leak and softparser
cleanup bugs well.  The items below are what is left.

---

## 1. NULL deref and packet leak in dump_err_pkts()  (dpaa2_rxtx.c ~729-746)

Three related problems in the same function:

(a) `mbuf` is NULL-checked on line 729 (`if (mbuf)`) but the very next
    statement dereferences `mbuf->nb_segs` unconditionally — crashes
    when mbuf is NULL.

(b) In the multi-segment path the while-loop walks `mbuf` to NULL, then
    `rte_pktmbuf_free(mbuf)` frees NULL — no-op — so the packet is
    never freed.

(c) `sprintf(title, "Payload seg[%d]", i)` writes into a 32-byte stack
    buffer with no bounds check.

Suggested fix: save the head pointer before iterating, move the hexdump
and free inside the NULL guard, and switch to `snprintf`.

## 2. Unbounded SG chain walk in eth_sg_fd_to_mbuf()  (dpaa2_rxtx.c:334)

```c
while (!DPAA2_SG_IS_FINAL(sge)) {
    sge = &sgt[i++];
    ...
}
```

No upper bound on `i`.  If hardware or corrupt DMA data fails to set
the FINAL bit, this walks past the end of the SGT buffer.  Adding
`&& i < DPAA2_MAX_SGS` to the loop condition is the minimal fix.

## 3. MAC stats path can deref NULL DMA pointers  (dpaa2_ethdev.c ~2005-2024)

`dpaa2_dev_mac_setup_stats()` is void-returning and can fail silently
(malloc or IOVA mapping failure), setting both DMA pointers to NULL.
The caller in `dpaa2_dev_xstats_get()` does not check and proceeds to
pass zero IOVAs to firmware and dereference `cnt_values_dma_mem`.
Either make the setup function return an error code or add a NULL guard
before use.

## 4. sw_td label in dpaa2_dev_tx() may double-free  (dpaa2_rxtx.c ~1516-1523)

At the `sw_td:` label, `bufs` has already been advanced past the
prepared frames and `num_tx` counts packets already handed to HW.
The loop frees `num_tx` packets via `*bufs++`, which are the same
buffers HW will also release — potential double-free.  Needs someone
with the HW context to verify the intended semantics.

## 5. dpaa2_dev_loopback_rx() always returns 0  (dpaa2_rxtx.c:2144)

The function updates internal counters correctly but unconditionally
returns 0, so the framework never sees received traffic.  Should
probably return `num_rx`.

## 6. Burst mode info reports only the first matching offload  (dpaa2_ethdev.c ~464-506)

Both `dpaa2_dev_rx_burst_mode_get()` and the TX variant break out of
the offload loop after the first match.  When multiple offloads are
enabled only the first is shown in `mode->info`.  The loop should
concatenate all matching strings.

  parent reply	other threads:[~2026-02-18 17:21 UTC|newest]

Thread overview: 98+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-18 16:04 [PATCH 00/11] net/dpaa2: fixes and improvements Maxime Leroy
2026-02-18 16:04 ` [PATCH 01/11] net/dpaa2: fix queue block memory leak on port close Maxime Leroy
2026-02-18 16:04 ` [PATCH 02/11] net/dpaa2: fix rx error queue " Maxime Leroy
2026-02-19 10:56   ` Hemant Agrawal
2026-02-19 11:01     ` Hemant Agrawal
2026-02-18 16:04 ` [PATCH 03/11] net/dpaa2: warn on rx descriptor limit only in high perf buffer mode Maxime Leroy
2026-02-19 10:58   ` Hemant Agrawal
2026-02-18 16:04 ` [PATCH 04/11] net/dpaa2: fix rx error queue leak in alloc error path Maxime Leroy
2026-02-18 16:04 ` [PATCH 05/11] net/dpaa2: fix resource leak on softparser failure Maxime Leroy
2026-02-18 16:04 ` [PATCH 06/11] net/dpaa2: add devargs to disable Rx taildrop Maxime Leroy
2026-02-19 13:41   ` Hemant Agrawal
2026-02-18 16:04 ` [PATCH 07/11] net/dpaa2: replace data stashing getenv with devargs Maxime Leroy
2026-02-19 13:44   ` Hemant Agrawal
2026-02-18 16:04 ` [PATCH 08/11] net/dpaa2: fix link not up after port stop/start Maxime Leroy
2026-02-19 13:45   ` Hemant Agrawal
2026-02-18 16:04 ` [PATCH 09/11] net/dpaa2: use CHECK_INTERVAL macro in set_link_down Maxime Leroy
2026-02-19 13:46   ` Hemant Agrawal
2026-02-18 16:04 ` [PATCH 10/11] bus/fslmc: fix devargs not propagated on hotplug Maxime Leroy
2026-02-18 16:45   ` David Marchand
2026-02-19  9:05     ` Maxime Leroy
2026-02-19 16:52       ` David Marchand
2026-02-18 16:04 ` [PATCH 11/11] bus/fslmc: remove dead blocklist check in plug path Maxime Leroy
2026-02-18 17:01   ` David Marchand
2026-02-18 17:07 ` [PATCH 00/11] net/dpaa2: fixes and improvements Stephen Hemminger
2026-02-19  9:12   ` Maxime Leroy
2026-02-18 17:21 ` Stephen Hemminger [this message]
2026-02-26 14:33 ` [PATCH v2 00/17] " Maxime Leroy
2026-02-26 19:25   ` Stephen Hemminger
2026-03-05 16:55     ` David Marchand
2026-03-05 17:57       ` Stephen Hemminger
2026-03-06  8:09         ` Maxime Leroy
2026-03-06 13:30   ` [PATCH v3 " Maxime Leroy
2026-03-06 18:51     ` Stephen Hemminger
2026-03-09  9:45       ` Maxime Leroy
2026-03-09 10:29         ` Hemant Agrawal
2026-03-24  5:19           ` Hemant Agrawal
2026-03-25 20:45     ` [PATCH v4 " Maxime Leroy
2026-03-25 20:45       ` [PATCH v4 01/17] net/dpaa2: fix queue block memory leak on port close Maxime Leroy
2026-03-25 20:45       ` [PATCH v4 02/17] net/dpaa2: fix Rx error queue memory leaks Maxime Leroy
2026-03-25 20:45       ` [PATCH v4 03/17] net/dpaa2: warn on Rx descriptor limit in high perf mode Maxime Leroy
2026-03-25 20:45       ` [PATCH v4 04/17] net/dpaa2: fix resource leak on softparser failure Maxime Leroy
2026-03-25 20:45       ` [PATCH v4 05/17] net/dpaa2: fix link not up after port stop/start Maxime Leroy
2026-03-25 20:45       ` [PATCH v4 06/17] bus/fslmc: fix devargs not propagated on hotplug Maxime Leroy
2026-03-25 20:45       ` [PATCH v4 07/17] net/dpaa2: fix spurious VLAN insertion on non-VLAN packets Maxime Leroy
2026-03-25 20:45       ` [PATCH v4 08/17] net/dpaa2: fix error packet dump crash and memory leak Maxime Leroy
2026-03-25 20:45       ` [PATCH v4 09/17] net/dpaa2: fix L4 packet type in slow parse path Maxime Leroy
2026-03-25 20:45       ` [PATCH v4 10/17] net/dpaa2: fix L3/L4 checksum offload flags Maxime Leroy
2026-03-25 20:45       ` [PATCH v4 11/17] net/dpaa2: fix software taildrop buffer access Maxime Leroy
2026-03-25 20:45       ` [PATCH v4 12/17] net/dpaa2: fix burst mode info report Maxime Leroy
2026-03-25 20:45       ` [PATCH v4 13/17] net/dpaa2: add SG table walk upper bound in Rx path Maxime Leroy
2026-03-25 20:45       ` [PATCH v4 14/17] net/dpaa2: fix MAC stats DMA alloc per xstats call Maxime Leroy
2026-03-25 20:45       ` [PATCH v4 15/17] net/dpaa2: use check interval macro in link down path Maxime Leroy
2026-03-25 20:45       ` [PATCH v4 16/17] net/dpaa2: add devargs to disable Rx taildrop Maxime Leroy
2026-03-25 20:45       ` [PATCH v4 17/17] net/dpaa2: add devargs alternative for data stashing getenv Maxime Leroy
2026-03-26 22:42       ` [PATCH v4 00/17] net/dpaa2: fixes and improvements Stephen Hemminger
2026-03-06 13:30   ` [PATCH v3 01/17] net/dpaa2: fix queue block memory leak on port close Maxime Leroy
2026-03-06 13:30   ` [PATCH v3 02/17] net/dpaa2: fix Rx error queue memory leaks Maxime Leroy
2026-03-06 13:30   ` [PATCH v3 03/17] net/dpaa2: warn on Rx descriptor limit in high perf mode Maxime Leroy
2026-03-12  9:27     ` Hemant Agrawal
2026-03-18 15:17       ` Maxime Leroy
2026-03-06 13:30   ` [PATCH v3 04/17] net/dpaa2: fix resource leak on softparser failure Maxime Leroy
2026-03-06 13:30   ` [PATCH v3 05/17] net/dpaa2: fix link not up after port stop/start Maxime Leroy
2026-03-06 13:30   ` [PATCH v3 06/17] bus/fslmc: fix devargs not propagated on hotplug Maxime Leroy
2026-03-06 13:30   ` [PATCH v3 07/17] net/dpaa2: fix spurious VLAN insertion on non-VLAN packets Maxime Leroy
2026-03-06 13:30   ` [PATCH v3 08/17] net/dpaa2: fix error packet dump crash and memory leak Maxime Leroy
2026-03-06 13:30   ` [PATCH v3 09/17] net/dpaa2: fix L4 packet type in slow parse path Maxime Leroy
2026-03-06 13:30   ` [PATCH v3 10/17] net/dpaa2: fix L3/L4 checksum offload flags Maxime Leroy
2026-03-06 13:30   ` [PATCH v3 11/17] net/dpaa2: fix software taildrop buffer access Maxime Leroy
2026-03-06 13:30   ` [PATCH v3 12/17] net/dpaa2: fix burst mode info report Maxime Leroy
2026-03-06 13:30   ` [PATCH v3 13/17] net/dpaa2: add SG table walk upper bound in Rx path Maxime Leroy
2026-03-06 13:30   ` [PATCH v3 14/17] net/dpaa2: fix MAC stats DMA alloc per xstats call Maxime Leroy
2026-03-06 13:30   ` [PATCH v3 15/17] net/dpaa2: use check interval macro in link down path Maxime Leroy
2026-03-06 13:30   ` [PATCH v3 16/17] net/dpaa2: add devargs to disable Rx taildrop Maxime Leroy
2026-03-06 13:30   ` [PATCH v3 17/17] net/dpaa2: add devargs alternative for data stashing getenv Maxime Leroy
2026-03-06 17:48     ` Stephen Hemminger
2026-02-26 14:33 ` [PATCH v2 01/17] net/dpaa2: fix queue block memory leak on port close Maxime Leroy
2026-02-26 14:33 ` [PATCH v2 02/17] net/dpaa2: fix rx error queue memory leaks Maxime Leroy
2026-02-26 14:33 ` [PATCH v2 03/17] net/dpaa2: warn on rx descriptor limit only in high perf buffer mode Maxime Leroy
2026-02-26 19:24   ` Stephen Hemminger
2026-02-26 14:33 ` [PATCH v2 04/17] net/dpaa2: fix resource leak on softparser failure Maxime Leroy
2026-02-26 14:33 ` [PATCH v2 05/17] net/dpaa2: fix link not up after port stop/start Maxime Leroy
2026-02-26 14:33 ` [PATCH v2 06/17] bus/fslmc: fix devargs not propagated on hotplug Maxime Leroy
2026-02-26 14:33 ` [PATCH v2 07/17] net/dpaa2: fix spurious VLAN insertion on non-VLAN packets Maxime Leroy
2026-02-26 14:33 ` [PATCH v2 08/17] net/dpaa2: fix error packet dump crash and memory leak Maxime Leroy
2026-02-26 19:23   ` Stephen Hemminger
2026-02-26 14:33 ` [PATCH v2 09/17] net/dpaa2: fix L4 packet type classification in slow parse path Maxime Leroy
2026-02-26 14:33 ` [PATCH v2 10/17] net/dpaa2: fix L3/L4 checksum offload flags Maxime Leroy
2026-02-26 14:33 ` [PATCH v2 11/17] net/dpaa2: fix software taildrop buffer access Maxime Leroy
2026-02-26 19:21   ` Stephen Hemminger
2026-02-27  9:23     ` David Marchand
2026-02-27 21:29       ` Morten Brørup
2026-03-06 17:35         ` Stephen Hemminger
2026-02-26 14:33 ` [PATCH v2 12/17] net/dpaa2: fix burst mode info to report active burst function Maxime Leroy
2026-02-26 14:33 ` [PATCH v2 13/17] net/dpaa2: add SG table walk upper bound in Rx path Maxime Leroy
2026-02-26 14:33 ` [PATCH v2 14/17] net/dpaa2: fix MAC stats DMA buffer allocation per xstats call Maxime Leroy
2026-02-26 14:33 ` [PATCH v2 15/17] net/dpaa2: use CHECK_INTERVAL macro in set_link_down Maxime Leroy
2026-02-26 14:33 ` [PATCH v2 16/17] net/dpaa2: add devargs to disable Rx taildrop Maxime Leroy
2026-02-26 14:33 ` [PATCH v2 17/17] net/dpaa2: add devargs alternative for data stashing getenv Maxime Leroy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260218092111.695aaf00@phoenix.local \
    --to=stephen@networkplumber.org \
    --cc=dev@dpdk.org \
    --cc=hemant.agrawal@nxp.com \
    --cc=maxime@leroys.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.