Skip to content

Commit c10e4ca

Browse files
isubramadavem330
authored andcommitted
net: xgene: fix possible NULL dereference in xgene_enet_free_desc_rings()
A NULL pointer dereference is possible for the argument ring->buf_pool which is passed to xgene_enet_free_desc_ring(), as ring could be NULL. And now since NULL pointers are being checked for before the calls to xgene_enet_free_desc_ring(), might as well take advantage of them and not call the function if the argument would be NULL. Reported-by: Dan Carpenter <[email protected]> Signed-off-by: Iyappan Subramanian <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 2ba5af4 commit c10e4ca

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

drivers/net/ethernet/apm/xgene/xgene_enet_main.c

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -563,15 +563,21 @@ static void xgene_enet_free_desc_rings(struct xgene_enet_pdata *pdata)
563563
struct xgene_enet_desc_ring *ring;
564564

565565
ring = pdata->tx_ring;
566-
if (ring && ring->cp_ring && ring->cp_ring->cp_skb)
567-
devm_kfree(dev, ring->cp_ring->cp_skb);
568-
xgene_enet_free_desc_ring(ring);
566+
if (ring) {
567+
if (ring->cp_ring && ring->cp_ring->cp_skb)
568+
devm_kfree(dev, ring->cp_ring->cp_skb);
569+
xgene_enet_free_desc_ring(ring);
570+
}
569571

570572
ring = pdata->rx_ring;
571-
if (ring && ring->buf_pool && ring->buf_pool->rx_skb)
572-
devm_kfree(dev, ring->buf_pool->rx_skb);
573-
xgene_enet_free_desc_ring(ring->buf_pool);
574-
xgene_enet_free_desc_ring(ring);
573+
if (ring) {
574+
if (ring->buf_pool) {
575+
if (ring->buf_pool->rx_skb)
576+
devm_kfree(dev, ring->buf_pool->rx_skb);
577+
xgene_enet_free_desc_ring(ring->buf_pool);
578+
}
579+
xgene_enet_free_desc_ring(ring);
580+
}
575581
}
576582

577583
static struct xgene_enet_desc_ring *xgene_enet_create_desc_ring(

0 commit comments

Comments
 (0)