Le 04/05/2026 à 18:11, Holger Brunck a écrit :
When cleaning up the resources we need to iterate over the
tx_skbuf array to free pending TX messages.

Fixes: c19b6d246a35 ("drivers/net: support hdlc function for QE-UCC")
Signed-off-by: Holger Brunck <[email protected]>
---
  drivers/net/wan/fsl_ucc_hdlc.c | 7 +++++++
  1 file changed, 7 insertions(+)

diff --git a/drivers/net/wan/fsl_ucc_hdlc.c b/drivers/net/wan/fsl_ucc_hdlc.c
index adf3863463f5..68f78aeabdc3 100644
--- a/drivers/net/wan/fsl_ucc_hdlc.c
+++ b/drivers/net/wan/fsl_ucc_hdlc.c
@@ -739,6 +739,8 @@ static int uhdlc_open(struct net_device *dev)
static void uhdlc_memclean(struct ucc_hdlc_private *priv)
  {
+       int i;
+
        qe_muram_free(ioread16be(&priv->ucc_pram->riptr));
        qe_muram_free(ioread16be(&priv->ucc_pram->tiptr));
@@ -769,6 +771,11 @@ static void uhdlc_memclean(struct ucc_hdlc_private *priv)
        kfree(priv->rx_skbuff);
        priv->rx_skbuff = NULL;
+ for (i = 0; i < TX_BD_RING_LEN) {
+               kfree(priv->tx_skbuff[i]);

I don't think you can just kfree() an skb like this.

I think you have to call dev_kfree_skb_any() instead.

Christophe


+               priv->tx_skbuff[i] = NULL;
+       }
+
        kfree(priv->tx_skbuff);
        priv->tx_skbuff = NULL;


Reply via email to