• Murali Karicheri's avatar
    PCI: keystone: Fix MSI code that retrieves struct pcie_port pointer · 5bbc2b41
    Murali Karicheri authored
    commit 79e3f4a8 upstream.
    
    Commit cbce7900 ("PCI: designware: Make driver arch-agnostic") changed
    the host bridge sysdata pointer from the ARM pci_sys_data to the DesignWare
    pcie_port structure, and changed pcie-designware.c to reflect that.  But it
    did not change the corresponding code in pci-keystone-dw.c, so it caused
    crashes on Keystone:
    
      Unable to handle kernel NULL pointer dereference at virtual address 00000030
      pgd = c0003000
      [00000030] *pgd=80000800004003, *pmd=00000000
      Internal error: Oops: 206 [#1] PREEMPT SMP ARM
      CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.4.2-00139-gb74f926 #2
      Hardware name: Keystone
      PC is at ks_dw_pcie_msi_irq_unmask+0x24/0x58
    
    Change pci-keystone-dw.c to expect sysdata to be the struct pcie_port
    pointer.
    
    [bhelgaas: changelog]
    Fixes: cbce7900 ("PCI: designware: Make driver arch-agnostic")
    Signed-off-by: default avatarMurali Karicheri <m-karicheri2@ti.com>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    CC: Zhou Wang <wangzhou1@hisilicon.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    5bbc2b41
pci-keystone-dw.c 13.5 KB