drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 1 + 1 file changed, 1 insertion(+)
When xdp_rxq_info_reg_mem_model() fails after a successful
xdp_rxq_info_reg(), the kernel may leaks the registered RXQ
info structure. Fix this by calling xdp_rxq_info_unreg() in
the error path, ensuring proper cleanup when memory model
registration fails.
Fixes: d678be1dc1ec ("dpaa2-eth: add XDP_REDIRECT support")
Signed-off-by: Fushuai Wang <wangfushuai@baidu.com>
---
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
index 2ec2c3dab250..b4a62eae4719 100644
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
@@ -3939,6 +3939,7 @@ static int dpaa2_eth_setup_rx_flow(struct dpaa2_eth_priv *priv,
MEM_TYPE_PAGE_ORDER0, NULL);
if (err) {
dev_err(dev, "xdp_rxq_info_reg_mem_model failed\n");
+ xdp_rxq_info_unreg(&fq->channel->xdp_rxq);
return err;
}
--
2.36.1
On Tue, Jun 24, 2025 at 10:42:35PM +0800, Fushuai Wang wrote: > When xdp_rxq_info_reg_mem_model() fails after a successful > xdp_rxq_info_reg(), the kernel may leaks the registered RXQ > info structure. Fix this by calling xdp_rxq_info_unreg() in > the error path, ensuring proper cleanup when memory model > registration fails. > > Fixes: d678be1dc1ec ("dpaa2-eth: add XDP_REDIRECT support") > Signed-off-by: Fushuai Wang <wangfushuai@baidu.com> Thanks, I agree this is needed. Reviewed-by: Simon Horman <horms@kernel.org> But I wonder how these resources are released in the following cases: * Error in dpaa2_eth_bind_dpni() after at least one successful call to dpaa2_eth_setup_rx_flow() * Error in dpaa2_eth_probe() after a successful call to dpaa2_eth_bind_dpni() * Driver removal (dpaa2_eth_remove())
>> When xdp_rxq_info_reg_mem_model() fails after a successful >> xdp_rxq_info_reg(), the kernel may leaks the registered RXQ >> info structure. Fix this by calling xdp_rxq_info_unreg() in >> the error path, ensuring proper cleanup when memory model >> registration fails. >> >> Fixes: d678be1dc1ec ("dpaa2-eth: add XDP_REDIRECT support") >> Signed-off-by: Fushuai Wang <wangfushuai@baidu.com> > > Thanks, I agree this is needed. > > Reviewed-by: Simon Horman <horms@kernel.org> > > But I wonder how these resources are released in the following cases: > > * Error in dpaa2_eth_bind_dpni() after at least one > successful call to dpaa2_eth_setup_rx_flow() > > * Error in dpaa2_eth_probe() after a successful call to > dpaa2_eth_bind_dpni() > > * Driver removal (dpaa2_eth_remove()) Hi, Simon I think these paths also leak xdp_rxq_info. I'll add cleanup for them and send v2 shortly. -- Regards, Wang
On Wed, Jun 25, 2025 at 08:55:47PM +0800, Fushuai Wang wrote: > >> When xdp_rxq_info_reg_mem_model() fails after a successful > >> xdp_rxq_info_reg(), the kernel may leaks the registered RXQ > >> info structure. Fix this by calling xdp_rxq_info_unreg() in > >> the error path, ensuring proper cleanup when memory model > >> registration fails. > >> > >> Fixes: d678be1dc1ec ("dpaa2-eth: add XDP_REDIRECT support") > >> Signed-off-by: Fushuai Wang <wangfushuai@baidu.com> > > > > Thanks, I agree this is needed. > > > > Reviewed-by: Simon Horman <horms@kernel.org> > > > > But I wonder how these resources are released in the following cases: > > > > * Error in dpaa2_eth_bind_dpni() after at least one > > successful call to dpaa2_eth_setup_rx_flow() > > > > * Error in dpaa2_eth_probe() after a successful call to > > dpaa2_eth_bind_dpni() > > > > * Driver removal (dpaa2_eth_remove()) > > Hi, Simon > > I think these paths also leak xdp_rxq_info. > I'll add cleanup for them and send v2 shortly. Great, thanks.
© 2016 - 2025 Red Hat, Inc.