From: Mitch Williams Date: Sat, 28 Sep 2013 07:13:13 +0000 (+0000) Subject: i40e: don't free nonexistent rings X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=00403f0488e9082a3744376c821ad241cdc47e70;p=linux-beck.git i40e: don't free nonexistent rings Not all VSIs have rings! Check to see if rings were actually allocated before freeing them. This prevents a panic when tx_rings[0] is not allocated. Signed-off-by: Mitch Williams Signed-off-by: Jesse Brandeburg Tested-by: Sibai Li Signed-off-by: Jeff Kirsher --- diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c index 69ed8014afbd..a8c18faf1c54 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c @@ -5160,11 +5160,12 @@ static s32 i40e_vsi_clear_rings(struct i40e_vsi *vsi) { int i; - for (i = 0; i < vsi->alloc_queue_pairs; i++) { - kfree_rcu(vsi->tx_rings[i], rcu); - vsi->tx_rings[i] = NULL; - vsi->rx_rings[i] = NULL; - } + if (vsi->tx_rings[0]) + for (i = 0; i < vsi->alloc_queue_pairs; i++) { + kfree_rcu(vsi->tx_rings[i], rcu); + vsi->tx_rings[i] = NULL; + vsi->rx_rings[i] = NULL; + } return 0; }