From: Jakub Kicinski <kuba@kernel.org>
To: wei.fang@nxp.com
Cc: Jakub Kicinski <kuba@kernel.org>,
john.fastabend@gmail.com, linux-kernel@vger.kernel.org,
shenwei.wang@nxp.com, daniel@iogearbox.net, frank.li@nxp.com,
netdev@vger.kernel.org, xiaoning.wang@nxp.com, ast@kernel.org,
sdf@fomichev.me, imx@lists.linux.dev, davem@davemloft.net,
edumazet@google.com, hawk@kernel.org, bpf@vger.kernel.org,
pabeni@redhat.com, andrew+netdev@lunn.ch
Subject: Re: [v4,net-next,12/15] net: fec: move xdp_rxq_info* APIs out of fec_enet_create_page_pool()
Date: Sun, 25 Jan 2026 13:45:16 -0800 [thread overview]
Message-ID: <20260125214516.3384252-1-kuba@kernel.org> (raw)
In-Reply-To: <20260123022143.4121797-13-wei.fang@nxp.com>
This is an AI-generated review of your patch. The human sending this
email has considered the AI review valid, or at least plausible.
For local reproduction steps see https://netdev-ai.bots.linux.dev/ai-local.html
---
net: fec: add fec_alloc_rxq_buffers_pp() to allocate buffers from page pool
This commit extracts fec_alloc_rxq_buffers_pp() from fec_enet_alloc_rxq_buffers()
to prepare for XDP zero copy mode support. It also adds fec_free_rxq_buffers()
helper for cleanup.
> diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
> index c5ba532e00a8..867694d6d54d 100644
> --- a/drivers/net/ethernet/freescale/fec_main.c
> +++ b/drivers/net/ethernet/freescale/fec_main.c
[ ... ]
> +static int
> +fec_enet_alloc_rxq_buffers(struct net_device *ndev, unsigned int queue)
> +{
> + struct fec_enet_private *fep = netdev_priv(ndev);
> + struct fec_enet_priv_rx_q *rxq;
> + int err;
> +
> + rxq = fep->rx_queue[queue];
> + err = fec_alloc_rxq_buffers_pp(fep, rxq);
> + if (err)
> + return err;
> +
> + err = fec_xdp_rxq_info_reg(fep, rxq);
> + if (err) {
> + fec_free_rxq_buffers(rxq);
> +
> + return err;
> + }
> +
> + return 0;
> +}
Could there be a memory leak here on systems with multiple RX queues? The
old code had:
err_alloc:
fec_enet_free_buffers(ndev);
return -ENOMEM;
which freed all queues (both RX and TX). The new code calls
fec_free_rxq_buffers(rxq), which only frees the current queue.
If fec_enet_alloc_buffers() calls this function in a loop for multiple
queues and queue N fails after queues 0 through N-1 succeeded, only queue
N gets cleaned up. The caller fec_enet_alloc_buffers() just returns
-ENOMEM without freeing the previously allocated queues:
for (i = 0; i < fep->num_rx_queues; i++)
if (fec_enet_alloc_rxq_buffers(ndev, i))
return -ENOMEM;
And fec_enet_open() jumps to err_enet_alloc which does not call
fec_enet_free_buffers(), leaving the page pools and pages from the
successfully allocated queues leaked.
next prev parent reply other threads:[~2026-01-25 21:45 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-23 2:21 [PATCH v4 net-next 00/15] net: fec: improve XDP copy mode and add AF_XDP zero-copy support Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 01/15] net: fec: add fec_txq_trigger_xmit() helper Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 02/15] net: fec: add fec_rx_error_check() to check RX errors Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 03/15] net: fec: add rx_shift to indicate the extra bytes padded in front of RX frame Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 04/15] net: fec: add fec_build_skb() to build a skb Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 05/15] net: fec: improve fec_enet_rx_queue() Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 06/15] net: fec: add fec_enet_rx_queue_xdp() for XDP path Wei Fang
2026-01-25 21:44 ` [v4,net-next,06/15] " Jakub Kicinski
2026-01-26 2:09 ` Wei Fang
2026-01-27 0:17 ` Jakub Kicinski
2026-01-27 1:28 ` Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 07/15] net: fec: add tx_qid parameter to fec_enet_xdp_tx_xmit() Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 08/15] net: fec: transmit XDP frames in bulk Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 09/15] net: fec: remove unnecessary NULL pointer check when clearing TX BD ring Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 10/15] net: fec: use switch statement to check the type of tx_buf Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 11/15] net: fec: remove the size parameter from fec_enet_create_page_pool() Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 12/15] net: fec: move xdp_rxq_info* APIs out of fec_enet_create_page_pool() Wei Fang
2026-01-25 21:45 ` Jakub Kicinski [this message]
2026-01-26 2:22 ` [v4,net-next,12/15] " Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 13/15] net: fec: add fec_alloc_rxq_buffers_pp() to allocate buffers from page pool Wei Fang
2026-01-25 21:45 ` [v4,net-next,13/15] " Jakub Kicinski
2026-01-26 2:37 ` Wei Fang
2026-01-27 0:18 ` Jakub Kicinski
2026-01-23 2:21 ` [PATCH v4 net-next 14/15] net: fec: improve fec_enet_tx_queue() Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 15/15] net: fec: add AF_XDP zero-copy support Wei Fang
2026-01-25 21:45 ` [v4,net-next,15/15] " Jakub Kicinski
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=20260125214516.3384252-1-kuba@kernel.org \
--to=kuba@kernel.org \
--cc=andrew+netdev@lunn.ch \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=frank.li@nxp.com \
--cc=hawk@kernel.org \
--cc=imx@lists.linux.dev \
--cc=john.fastabend@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=sdf@fomichev.me \
--cc=shenwei.wang@nxp.com \
--cc=wei.fang@nxp.com \
--cc=xiaoning.wang@nxp.com \
/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.