Search Linux Wireless

Re: iwlwifi null pointer dereference

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

 



On Sat, Apr 12, 2014 at 6:11 PM, Alexander Monakov <amonakov@xxxxxxxxx> wrote:
> Hello,
>
> On a laptop with Wireless-N 135 card and 3.14.0 kernel I'm getting a
> kernel oops on cold boot ans wireless seems unusable, but suprisingly
> everything works fine after a reboot:
>
> [    4.155609] Intel(R) Wireless WiFi driver for Linux, in-tree:
> [    4.155611] Copyright(c) 2003- 2014 Intel Corporation
> [    4.155745] iwlwifi 0000:05:00.0: can't disable ASPM; OS doesn't
> have ASPM control
> [    4.155810] iwlwifi 0000:05:00.0: pci_enable_msi failed(0Xffffffda)
> [    4.173755] iwlwifi 0000:05:00.0: RF_KILL bit toggled to enable radio.
> [    4.173763] BUG: unable to handle kernel NULL pointer dereference
> at           (null)
> [    4.175243] IP: [<ffffffffa00057a0>]
> iwl_pcie_irq_handler+0xa10/0xb50 [iwlwifi]
> [    4.176641] PGD 0
> [    4.176874] iwlwifi 0000:05:00.0: loaded firmware version
> 18.168.6.1 op_mode iwldvm
> [    4.179239] Oops: 0000 [#1] SMP
> [    4.180623] Modules linked in: iwlwifi
>

Wow - interesting - you are getting an interrupt before we even enable them.

Does this help you?

diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c
b/drivers/net/wireless/iwlwifi/pcie/trans.c
index 37f7acc..bebab4e 100644
--- a/drivers/net/wireless/iwlwifi/pcie/trans.c
+++ b/drivers/net/wireless/iwlwifi/pcie/trans.c
@@ -1803,6 +1803,10 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct
pci_dev *pdev,
         * PCI Tx retries from interfering with C3 CPU state */
        pci_write_config_byte(pdev, PCI_CFG_RETRY_TIMEOUT, 0x00);

+       trans->dev = &pdev->dev;
+       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);
@@ -1814,8 +1818,6 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct
pci_dev *pdev,
                }
        }

-       trans->dev = &pdev->dev;
-       trans_pcie->pci_dev = pdev;
        trans->hw_rev = iwl_read32(trans, CSR_HW_REV);
        trans->hw_id = (pdev->device << 16) + pdev->subsystem_device;
        snprintf(trans->hw_id_str, sizeof(trans->hw_id_str),
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux