Commit 6a6014e2 authored by Shannon Nelson's avatar Shannon Nelson Committed by David S. Miller

ionic: rearrange reset and bus-master control

We can prevent potential incorrect DMA access attempts from the
NIC by enabling bus-master after the reset, and by disabling
bus-master earlier in cleanup.
Signed-off-by: default avatarShannon Nelson <snelson@pensando.io>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 3fbc9bb6
...@@ -247,12 +247,11 @@ static int ionic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -247,12 +247,11 @@ static int ionic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
goto err_out_pci_disable_device; goto err_out_pci_disable_device;
} }
pci_set_master(pdev);
pcie_print_link_status(pdev); pcie_print_link_status(pdev);
err = ionic_map_bars(ionic); err = ionic_map_bars(ionic);
if (err) if (err)
goto err_out_pci_clear_master; goto err_out_pci_disable_device;
/* Configure the device */ /* Configure the device */
err = ionic_setup(ionic); err = ionic_setup(ionic);
...@@ -260,6 +259,7 @@ static int ionic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -260,6 +259,7 @@ static int ionic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
dev_err(dev, "Cannot setup device: %d, aborting\n", err); dev_err(dev, "Cannot setup device: %d, aborting\n", err);
goto err_out_unmap_bars; goto err_out_unmap_bars;
} }
pci_set_master(pdev);
err = ionic_identify(ionic); err = ionic_identify(ionic);
if (err) { if (err) {
...@@ -350,6 +350,7 @@ static int ionic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -350,6 +350,7 @@ static int ionic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
ionic_reset(ionic); ionic_reset(ionic);
err_out_teardown: err_out_teardown:
ionic_dev_teardown(ionic); ionic_dev_teardown(ionic);
pci_clear_master(pdev);
/* Don't fail the probe for these errors, keep /* Don't fail the probe for these errors, keep
* the hw interface around for inspection * the hw interface around for inspection
*/ */
...@@ -358,8 +359,6 @@ static int ionic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -358,8 +359,6 @@ static int ionic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
err_out_unmap_bars: err_out_unmap_bars:
ionic_unmap_bars(ionic); ionic_unmap_bars(ionic);
pci_release_regions(pdev); pci_release_regions(pdev);
err_out_pci_clear_master:
pci_clear_master(pdev);
err_out_pci_disable_device: err_out_pci_disable_device:
pci_disable_device(pdev); pci_disable_device(pdev);
err_out_debugfs_del_dev: err_out_debugfs_del_dev:
...@@ -389,9 +388,9 @@ static void ionic_remove(struct pci_dev *pdev) ...@@ -389,9 +388,9 @@ static void ionic_remove(struct pci_dev *pdev)
ionic_port_reset(ionic); ionic_port_reset(ionic);
ionic_reset(ionic); ionic_reset(ionic);
ionic_dev_teardown(ionic); ionic_dev_teardown(ionic);
pci_clear_master(pdev);
ionic_unmap_bars(ionic); ionic_unmap_bars(ionic);
pci_release_regions(pdev); pci_release_regions(pdev);
pci_clear_master(pdev);
pci_disable_device(pdev); pci_disable_device(pdev);
ionic_debugfs_del_dev(ionic); ionic_debugfs_del_dev(ionic);
mutex_destroy(&ionic->dev_cmd_lock); mutex_destroy(&ionic->dev_cmd_lock);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment