Re: FAILED: patch "[PATCH] iwlwifi: pcie: don't panic if pcie transport alloc fails" failed to apply to 3.14-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Greg,

sorry for the delay, I was on vacation.

On 08/08/2015 11:51 PM, gregkh@xxxxxxxxxxxxxxxxxxx wrote:
> 
> The patch below does not apply to the 3.14-stable tree.
> If someone wants it applied there, or to any other stable or longterm
> tree, then please email the backport, including the original git commit
> id to <stable@xxxxxxxxxxxxxxx>.
> 
> thanks,
> 
> greg k-h
> 
> ------------------ original commit in Linus's tree ------------------
> 
> From af3f2f740173f8b5c61dba46f900998c5984ccd9 Mon Sep 17 00:00:00 2001
> From: Emmanuel Grumbach <emmanuel.grumbach@xxxxxxxxx>
> Date: Thu, 4 Jun 2015 09:51:11 +0300
> Subject: [PATCH] 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@xxxxxxxxxxxxxxx> [4.1]

This is not meant to be applied on 3.14, but on 4.1 only.
Thanks.

> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@xxxxxxxxx>
> 
> 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,
>  	struct iwl_trans_pcie *trans_pcie;
>  	struct iwl_trans *trans;
>  	u16 pci_cmd;
> -	int err;
> +	int ret;
>  
>  	trans = iwl_trans_alloc(sizeof(struct iwl_trans_pcie),
>  				&pdev->dev, cfg, &trans_ops_pcie, 0);
> @@ -2474,8 +2474,8 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
>  	spin_lock_init(&trans_pcie->ref_lock);
>  	init_waitqueue_head(&trans_pcie->ucode_write_waitq);
>  
> -	err = pci_enable_device(pdev);
> -	if (err)
> +	ret = pci_enable_device(pdev);
> +	if (ret)
>  		goto out_no_pci;
>  
>  	if (!cfg->base_params->pcie_l1_allowed) {
> @@ -2491,23 +2491,23 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
>  
>  	pci_set_master(pdev);
>  
> -	err = pci_set_dma_mask(pdev, DMA_BIT_MASK(36));
> -	if (!err)
> -		err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(36));
> -	if (err) {
> -		err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
> -		if (!err)
> -			err = pci_set_consistent_dma_mask(pdev,
> +	ret = pci_set_dma_mask(pdev, DMA_BIT_MASK(36));
> +	if (!ret)
> +		ret = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(36));
> +	if (ret) {
> +		ret = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
> +		if (!ret)
> +			ret = pci_set_consistent_dma_mask(pdev,
>  							  DMA_BIT_MASK(32));
>  		/* both attempts failed: */
> -		if (err) {
> +		if (ret) {
>  			dev_err(&pdev->dev, "No suitable DMA available\n");
>  			goto out_pci_disable_device;
>  		}
>  	}
>  
> -	err = pci_request_regions(pdev, DRV_NAME);
> -	if (err) {
> +	ret = pci_request_regions(pdev, DRV_NAME);
> +	if (ret) {
>  		dev_err(&pdev->dev, "pci_request_regions failed\n");
>  		goto out_pci_disable_device;
>  	}
> @@ -2515,7 +2515,7 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
>  	trans_pcie->hw_base = pci_ioremap_bar(pdev, 0);
>  	if (!trans_pcie->hw_base) {
>  		dev_err(&pdev->dev, "pci_ioremap_bar failed\n");
> -		err = -ENODEV;
> +		ret = -ENODEV;
>  		goto out_pci_release_regions;
>  	}
>  
> @@ -2527,9 +2527,9 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
>  	trans_pcie->pci_dev = pdev;
>  	iwl_disable_interrupts(trans);
>  
> -	err = pci_enable_msi(pdev);
> -	if (err) {
> -		dev_err(&pdev->dev, "pci_enable_msi failed(0X%x)\n", err);
> +	ret = pci_enable_msi(pdev);
> +	if (ret) {
> +		dev_err(&pdev->dev, "pci_enable_msi failed(0X%x)\n", ret);
>  		/* enable rfkill interrupt: hw bug w/a */
>  		pci_read_config_word(pdev, PCI_COMMAND, &pci_cmd);
>  		if (pci_cmd & PCI_COMMAND_INTX_DISABLE) {
> @@ -2547,7 +2547,6 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
>  	 */
>  	if (trans->cfg->device_family == IWL_DEVICE_FAMILY_8000) {
>  		unsigned long flags;
> -		int ret;
>  
>  		trans->hw_rev = (trans->hw_rev & 0xfff0) |
>  				(CSR_HW_REV_STEP(trans->hw_rev << 2) << 2);
> @@ -2591,13 +2590,14 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
>  	/* Initialize the wait queue for commands */
>  	init_waitqueue_head(&trans_pcie->wait_command_queue);
>  
> -	if (iwl_pcie_alloc_ict(trans))
> +	ret = iwl_pcie_alloc_ict(trans);
> +	if (ret)
>  		goto out_pci_disable_msi;
>  
> -	err = request_threaded_irq(pdev->irq, iwl_pcie_isr,
> +	ret = request_threaded_irq(pdev->irq, iwl_pcie_isr,
>  				   iwl_pcie_irq_handler,
>  				   IRQF_SHARED, DRV_NAME, trans);
> -	if (err) {
> +	if (ret) {
>  		IWL_ERR(trans, "Error allocating IRQ %d\n", pdev->irq);
>  		goto out_free_ict;
>  	}
> @@ -2617,5 +2617,5 @@ out_pci_disable_device:
>  	pci_disable_device(pdev);
>  out_no_pci:
>  	iwl_trans_free(trans);
> -	return ERR_PTR(err);
> +	return ERR_PTR(ret);
>  }
> 
> 
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]