• Mike Qiu's avatar
    powerpc/PCI: Fix NULL dereference in sys_pciconfig_iobase() list traversal · ff0c41b2
    Mike Qiu authored
    3bc95598 ("powerpc/PCI: Use list_for_each_entry() for bus traversal")
    caused a NULL pointer dereference because the loop body set the iterator to
    NULL:
    
      Unable to handle kernel paging request for data at address 0x00000000
      Faulting instruction address: 0xc000000000041d78
      Oops: Kernel access of bad area, sig: 11 [#1]
      ...
      NIP [c000000000041d78] .sys_pciconfig_iobase+0x68/0x1f0
      LR [c000000000041e0c] .sys_pciconfig_iobase+0xfc/0x1f0
      Call Trace:
      [c0000003b4787db0] [c000000000041e0c] .sys_pciconfig_iobase+0xfc/0x1f0 (unreliable)
      [c0000003b4787e30] [c000000000009ed8] syscall_exit+0x0/0x98
    
    Fix it by using a temporary variable for the iterator.
    
    [bhelgaas: changelog, drop tmp_bus initialization]
    Fixes: 3bc95598 powerpc/PCI: Use list_for_each_entry() for bus traversal
    Signed-off-by: default avatarMike Qiu <qiudayu@linux.vnet.ibm.com>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    ff0c41b2
pci_64.c 7.62 KB