]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: sxgbe: check descriptor ring allocation failures
authorChenguang Zhao <zhaochenguang@kylinos.cn>
Thu, 23 Jul 2026 02:18:20 +0000 (10:18 +0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 29 Jul 2026 08:33:10 +0000 (09:33 +0100)
sxgbe_open() ignores the return value of init_dma_desc_rings() and
continues to program DMA with invalid ring addresses when allocation
fails. Check the return value and disconnect the PHY on failure.

Fixes: 1edb9ca69e8a ("net: sxgbe: add basic framework for Samsung 10Gb ethernet driver")
Signed-off-by: Chenguang Zhao <zhaochenguang@kylinos.cn>
Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c

index 9b48a587d5c2e1427e644a549074b6de6d2ebe2d..70cf3619555f92acead3fa56a877b6cd56eb742f 100644 (file)
@@ -1078,7 +1078,9 @@ static int sxgbe_open(struct net_device *dev)
        priv->dma_buf_sz = SXGBE_ALIGN(DMA_BUFFER_SIZE);
        priv->tx_tc = TC_DEFAULT;
        priv->rx_tc = TC_DEFAULT;
-       init_dma_desc_rings(dev);
+       ret = init_dma_desc_rings(dev);
+       if (ret)
+               goto init_phy_error;
 
        /* DMA initialization and SW reset */
        ret = sxgbe_init_dma_engine(priv);
@@ -1187,6 +1189,7 @@ static int sxgbe_open(struct net_device *dev)
 
 init_error:
        free_dma_desc_resources(priv);
+init_phy_error:
        if (dev->phydev)
                phy_disconnect(dev->phydev);
 phy_error: