diff mbox

[next,S23,10/13] i40evf: null out ring pointers on free

Message ID 1449705033-4968-11-git-send-email-joshua.a.hay@intel.com
State Accepted
Delegated to: Jeff Kirsher
Headers show

Commit Message

Joshua Hay Dec. 9, 2015, 11:50 p.m. UTC
From: Mitch Williams <mitch.a.williams@intel.com>

Since we check these ring pointers to make sure we don't double-allocate
or double-free the rings, we had better null them out after we free
them. In very rare cases this can cause a panic if the driver is removed
during reset recovery.

Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Change-ID: Ib06eb4910a3058275c8f7ec5ef7f45baa4674f96
---
 drivers/net/ethernet/intel/i40evf/i40evf_main.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Bowers, AndrewX Dec. 17, 2015, 4:58 p.m. UTC | #1
> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces@lists.osuosl.org] On
> Behalf Of Joshua Hay
> Sent: Wednesday, December 09, 2015 3:51 PM
> To: intel-wired-lan@lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S23 10/13] i40evf: null out ring
> pointers on free
> 
> From: Mitch Williams <mitch.a.williams@intel.com>
> 
> Since we check these ring pointers to make sure we don't double-allocate or
> double-free the rings, we had better null them out after we free them. In
> very rare cases this can cause a panic if the driver is removed during reset
> recovery.
> 
> Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
> Change-ID: Ib06eb4910a3058275c8f7ec5ef7f45baa4674f96
> ---
>  drivers/net/ethernet/intel/i40evf/i40evf_main.c | 2 ++
>  1 file changed, 2 insertions(+)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Patch code changes correctly applied
diff mbox

Patch

diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
index d859045..c7f98e7 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
@@ -1122,7 +1122,9 @@  static void i40evf_free_queues(struct i40evf_adapter *adapter)
 	if (!adapter->vsi_res)
 		return;
 	kfree(adapter->tx_rings);
+	adapter->tx_rings = NULL;
 	kfree(adapter->rx_rings);
+	adapter->rx_rings = NULL;
 }
 
 /**