Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e98c72c9 authored by Lendacky, Thomas's avatar Lendacky, Thomas Committed by David S. Miller
Browse files

amd-xgbe: Free channel/ring structures later



The channel structure is freed before freeing the per channel
interrupts resulting in a kernel oops. Move the call to free
the channel structure to after the freeing of the per channel
interrupts.

Signed-off-by: default avatarTom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 6b798d70
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1369,9 +1369,6 @@ static int xgbe_close(struct net_device *netdev)
	/* Free the ring descriptors and buffers */
	desc_if->free_ring_resources(pdata);

	/* Free the channel and ring structures */
	xgbe_free_channels(pdata);

	/* Release the interrupts */
	devm_free_irq(pdata->dev, pdata->dev_irq, pdata);
	if (pdata->per_channel_irq) {
@@ -1380,6 +1377,9 @@ static int xgbe_close(struct net_device *netdev)
			devm_free_irq(pdata->dev, channel->dma_irq, channel);
	}

	/* Free the channel and ring structures */
	xgbe_free_channels(pdata);

	/* Disable the clocks */
	clk_disable_unprepare(pdata->ptpclk);
	clk_disable_unprepare(pdata->sysclk);