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

Commit fdb47ae8 authored by Mitch Williams's avatar Mitch Williams Committed by Jeff Kirsher
Browse files

i40evf: check rings before freeing resources



If the driver gets unloaded during reset recovery, it's possible
that it will attempt to free resources when they're already free.

Add a check to make sure that the Tx and Rx rings actually exist
before dereferencing them to free resources.

Change-ID: I4d2b7e9ede49f634d421a4c5deaa5446bc755eee
Signed-off-by: default avatarMitch Williams <mitch.a.williams@intel.com>
Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent b7b713a8
Loading
Loading
Loading
Loading
+6 −0
Original line number Original line Diff line number Diff line
@@ -2034,6 +2034,9 @@ void i40evf_free_all_tx_resources(struct i40evf_adapter *adapter)
{
{
	int i;
	int i;


	if (!adapter->tx_rings)
		return;

	for (i = 0; i < adapter->num_active_queues; i++)
	for (i = 0; i < adapter->num_active_queues; i++)
		if (adapter->tx_rings[i].desc)
		if (adapter->tx_rings[i].desc)
			i40evf_free_tx_resources(&adapter->tx_rings[i]);
			i40evf_free_tx_resources(&adapter->tx_rings[i]);
@@ -2102,6 +2105,9 @@ void i40evf_free_all_rx_resources(struct i40evf_adapter *adapter)
{
{
	int i;
	int i;


	if (!adapter->rx_rings)
		return;

	for (i = 0; i < adapter->num_active_queues; i++)
	for (i = 0; i < adapter->num_active_queues; i++)
		if (adapter->rx_rings[i].desc)
		if (adapter->rx_rings[i].desc)
			i40evf_free_rx_resources(&adapter->rx_rings[i]);
			i40evf_free_rx_resources(&adapter->rx_rings[i]);