aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>2015-06-04 02:51:11 -0400
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>2015-07-07 22:18:03 -0400
commitaf3f2f740173f8b5c61dba46f900998c5984ccd9 (patch)
tree7fe52f1d3080681d794b06ae8b7615dc699a4dbb /drivers/net
parent66337b7c67f6237720ba13f6d41b9d8dbcb59cda (diff)
iwlwifi: pcie: don't panic if pcie transport alloc fails
iwl_trans_pcie_alloc needs to return a non-zero value if it fails. Otherwise the iwl_drv_start will think that the allocation succeeded. Remove the duplication of err and ret variable and use ret which is the name we usually use in other places of the driver. Fixes: c278754a21e6 ("iwlwifi: mvm: support family 8000 B2/C steps") CC: <stable@vger.kernel.org> [4.1] Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/iwlwifi/pcie/trans.c44
1 files changed, 22 insertions, 22 deletions
diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c
index 608ba1e39a0f..fe61d0aa5550 100644
--- a/drivers/net/wireless/iwlwifi/pcie/trans.c
+++ b/drivers/net/wireless/iwlwifi/pcie/trans.c
@@ -2459,7 +2459,7 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
2459 struct iwl_trans_pcie *trans_pcie; 2459 struct iwl_trans_pcie *trans_pcie;
2460 struct iwl_trans *trans; 2460 struct iwl_trans *trans;
2461 u16 pci_cmd; 2461 u16 pci_cmd;
2462 int err; 2462 int ret;
2463 2463
2464 trans = iwl_trans_alloc(sizeof(struct iwl_trans_pcie), 2464 trans = iwl_trans_alloc(sizeof(struct iwl_trans_pcie),
2465 &pdev->dev, cfg, &trans_ops_pcie, 0); 2465 &pdev->dev, cfg, &trans_ops_pcie, 0);
@@ -2474,8 +2474,8 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
2474 spin_lock_init(&trans_pcie->ref_lock); 2474 spin_lock_init(&trans_pcie->ref_lock);
2475 init_waitqueue_head(&trans_pcie->ucode_write_waitq); 2475 init_waitqueue_head(&trans_pcie->ucode_write_waitq);
2476 2476
2477 err = pci_enable_device(pdev); 2477 ret = pci_enable_device(pdev);
2478 if (err) 2478 if (ret)
2479 goto out_no_pci; 2479 goto out_no_pci;
2480 2480
2481 if (!cfg->base_params->pcie_l1_allowed) { 2481 if (!cfg->base_params->pcie_l1_allowed) {
@@ -2491,23 +2491,23 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
2491 2491
2492 pci_set_master(pdev); 2492 pci_set_master(pdev);
2493 2493
2494 err = pci_set_dma_mask(pdev, DMA_BIT_MASK(36)); 2494 ret = pci_set_dma_mask(pdev, DMA_BIT_MASK(36));
2495 if (!err) 2495 if (!ret)
2496 err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(36)); 2496 ret = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(36));
2497 if (err) { 2497 if (ret) {
2498 err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32)); 2498 ret = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
2499 if (!err) 2499 if (!ret)
2500 err = pci_set_consistent_dma_mask(pdev, 2500 ret = pci_set_consistent_dma_mask(pdev,
2501 DMA_BIT_MASK(32)); 2501 DMA_BIT_MASK(32));
2502 /* both attempts failed: */ 2502 /* both attempts failed: */
2503 if (err) { 2503 if (ret) {
2504 dev_err(&pdev->dev, "No suitable DMA available\n"); 2504 dev_err(&pdev->dev, "No suitable DMA available\n");
2505 goto out_pci_disable_device; 2505 goto out_pci_disable_device;
2506 } 2506 }
2507 } 2507 }
2508 2508
2509 err = pci_request_regions(pdev, DRV_NAME); 2509 ret = pci_request_regions(pdev, DRV_NAME);
2510 if (err) { 2510 if (ret) {
2511 dev_err(&pdev->dev, "pci_request_regions failed\n"); 2511 dev_err(&pdev->dev, "pci_request_regions failed\n");
2512 goto out_pci_disable_device; 2512 goto out_pci_disable_device;
2513 } 2513 }
@@ -2515,7 +2515,7 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
2515 trans_pcie->hw_base = pci_ioremap_bar(pdev, 0); 2515 trans_pcie->hw_base = pci_ioremap_bar(pdev, 0);
2516 if (!trans_pcie->hw_base) { 2516 if (!trans_pcie->hw_base) {
2517 dev_err(&pdev->dev, "pci_ioremap_bar failed\n"); 2517 dev_err(&pdev->dev, "pci_ioremap_bar failed\n");
2518 err = -ENODEV; 2518 ret = -ENODEV;
2519 goto out_pci_release_regions; 2519 goto out_pci_release_regions;
2520 } 2520 }
2521 2521
@@ -2527,9 +2527,9 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
2527 trans_pcie->pci_dev = pdev; 2527 trans_pcie->pci_dev = pdev;
2528 iwl_disable_interrupts(trans); 2528 iwl_disable_interrupts(trans);
2529 2529
2530 err = pci_enable_msi(pdev); 2530 ret = pci_enable_msi(pdev);
2531 if (err) { 2531 if (ret) {
2532 dev_err(&pdev->dev, "pci_enable_msi failed(0X%x)\n", err); 2532 dev_err(&pdev->dev, "pci_enable_msi failed(0X%x)\n", ret);
2533 /* enable rfkill interrupt: hw bug w/a */ 2533 /* enable rfkill interrupt: hw bug w/a */
2534 pci_read_config_word(pdev, PCI_COMMAND, &pci_cmd); 2534 pci_read_config_word(pdev, PCI_COMMAND, &pci_cmd);
2535 if (pci_cmd & PCI_COMMAND_INTX_DISABLE) { 2535 if (pci_cmd & PCI_COMMAND_INTX_DISABLE) {
@@ -2547,7 +2547,6 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
2547 */ 2547 */
2548 if (trans->cfg->device_family == IWL_DEVICE_FAMILY_8000) { 2548 if (trans->cfg->device_family == IWL_DEVICE_FAMILY_8000) {
2549 unsigned long flags; 2549 unsigned long flags;
2550 int ret;
2551 2550
2552 trans->hw_rev = (trans->hw_rev & 0xfff0) | 2551 trans->hw_rev = (trans->hw_rev & 0xfff0) |
2553 (CSR_HW_REV_STEP(trans->hw_rev << 2) << 2); 2552 (CSR_HW_REV_STEP(trans->hw_rev << 2) << 2);
@@ -2591,13 +2590,14 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
2591 /* Initialize the wait queue for commands */ 2590 /* Initialize the wait queue for commands */
2592 init_waitqueue_head(&trans_pcie->wait_command_queue); 2591 init_waitqueue_head(&trans_pcie->wait_command_queue);
2593 2592
2594 if (iwl_pcie_alloc_ict(trans)) 2593 ret = iwl_pcie_alloc_ict(trans);
2594 if (ret)
2595 goto out_pci_disable_msi; 2595 goto out_pci_disable_msi;
2596 2596
2597 err = request_threaded_irq(pdev->irq, iwl_pcie_isr, 2597 ret = request_threaded_irq(pdev->irq, iwl_pcie_isr,
2598 iwl_pcie_irq_handler, 2598 iwl_pcie_irq_handler,
2599 IRQF_SHARED, DRV_NAME, trans); 2599 IRQF_SHARED, DRV_NAME, trans);
2600 if (err) { 2600 if (ret) {
2601 IWL_ERR(trans, "Error allocating IRQ %d\n", pdev->irq); 2601 IWL_ERR(trans, "Error allocating IRQ %d\n", pdev->irq);
2602 goto out_free_ict; 2602 goto out_free_ict;
2603 } 2603 }
@@ -2617,5 +2617,5 @@ out_pci_disable_device:
2617 pci_disable_device(pdev); 2617 pci_disable_device(pdev);
2618out_no_pci: 2618out_no_pci:
2619 iwl_trans_free(trans); 2619 iwl_trans_free(trans);
2620 return ERR_PTR(err); 2620 return ERR_PTR(ret);
2621} 2621}