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: Tom Lendacky <thomas.lendacky@amd.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
6b798d70d0
commit
e98c72c942
|
@ -1369,9 +1369,6 @@ static int xgbe_close(struct net_device *netdev)
|
||||||
/* Free the ring descriptors and buffers */
|
/* Free the ring descriptors and buffers */
|
||||||
desc_if->free_ring_resources(pdata);
|
desc_if->free_ring_resources(pdata);
|
||||||
|
|
||||||
/* Free the channel and ring structures */
|
|
||||||
xgbe_free_channels(pdata);
|
|
||||||
|
|
||||||
/* Release the interrupts */
|
/* Release the interrupts */
|
||||||
devm_free_irq(pdata->dev, pdata->dev_irq, pdata);
|
devm_free_irq(pdata->dev, pdata->dev_irq, pdata);
|
||||||
if (pdata->per_channel_irq) {
|
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);
|
devm_free_irq(pdata->dev, channel->dma_irq, channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Free the channel and ring structures */
|
||||||
|
xgbe_free_channels(pdata);
|
||||||
|
|
||||||
/* Disable the clocks */
|
/* Disable the clocks */
|
||||||
clk_disable_unprepare(pdata->ptpclk);
|
clk_disable_unprepare(pdata->ptpclk);
|
||||||
clk_disable_unprepare(pdata->sysclk);
|
clk_disable_unprepare(pdata->sysclk);
|
||||||
|
|
Loading…
Reference in New Issue