From: Gavin Shan Date: Fri, 24 Jan 2014 09:12:03 +0000 (+0800) Subject: net/cxgb4: Fix referencing freed adapter X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=8b662fe70c68282f78482dc272df0c4f355e49f5;p=openwrt%2Fstaging%2Fblogic.git net/cxgb4: Fix referencing freed adapter The adapter is freed before we check its flags. It was caused by commit 144be3d ("net/cxgb4: Avoid disabling PCI device for towice"). The problem was reported by Intel's "0-day" tool. The patch fixes it to avoid reverting commit 144be3d. Reported-by: Dan Carpenter Signed-off-by: Gavin Shan Signed-off-by: David S. Miller --- diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c index 139a70405582..43ab35fea48d 100644 --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c +++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c @@ -6163,13 +6163,13 @@ static void remove_one(struct pci_dev *pdev) iounmap(adapter->regs); if (!is_t4(adapter->params.chip)) iounmap(adapter->bar2); - kfree(adapter); pci_disable_pcie_error_reporting(pdev); if ((adapter->flags & DEV_ENABLED)) { pci_disable_device(pdev); adapter->flags &= ~DEV_ENABLED; } pci_release_regions(pdev); + kfree(adapter); } else pci_release_regions(pdev); }