From 7a0d83843633b1d4569da1146f4be4932795961d Mon Sep 17 00:00:00 2001 From: Alexander Duyck Date: Sat, 5 May 2012 05:32:26 +0000 Subject: [PATCH] --- yaml --- r: 315731 b: refs/heads/master c: d773d1310625be3b040b436178ad59a0af8888f1 h: refs/heads/master i: 315729: bc76c948a02d81dbdf5794a689a3102398d1ddf9 315727: 0b6ca166ecb074c29a316240713ac903c626c0ef v: v3 --- [refs] | 2 +- .../net/ethernet/intel/ixgbe/ixgbe_sriov.c | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 099a12324743..b506a81117fb 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1d9c0bfd0f0470c8fb0033999f623d4eec7b1a2c +refs/heads/master: d773d1310625be3b040b436178ad59a0af8888f1 diff --git a/trunk/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c b/trunk/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c index c7d831d6e212..4f22668b6aea 100644 --- a/trunk/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c +++ b/trunk/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c @@ -208,6 +208,17 @@ void ixgbe_disable_sriov(struct ixgbe_adapter *adapter) u32 vmdctl; int i; + /* set num VFs to 0 to prevent access to vfinfo */ + adapter->num_vfs = 0; + + /* free VF control structures */ + kfree(adapter->vfinfo); + adapter->vfinfo = NULL; + + /* free macvlan list */ + kfree(adapter->mv_list); + adapter->mv_list = NULL; + #ifdef CONFIG_PCI_IOV /* disable iov and allow time for transactions to clear */ pci_disable_sriov(adapter->pdev); @@ -238,11 +249,7 @@ void ixgbe_disable_sriov(struct ixgbe_adapter *adapter) if (adapter->vfinfo[i].vfdev) pci_dev_put(adapter->vfinfo[i].vfdev); } - kfree(adapter->vfinfo); - kfree(adapter->mv_list); - adapter->vfinfo = NULL; - adapter->num_vfs = 0; adapter->flags &= ~IXGBE_FLAG_SRIOV_ENABLED; }