• Tony Battersby's avatar
    [SCSI] sym53c8xx: unmap pci memory after probe errors · a71d035d
    Tony Battersby authored
    During sym2_probe(), sym_init_device() does pci_iomap(), but there is
    no corresponding pci_iounmap() if an error occurs before sym_attach()
    copies sym_device::s.{ioaddr,ramaddr} to np.
    1) Add the sym_iounmap_device() function.
    2) Call sym_iounmap_device() if an error occurs between
       sym_init_device() and the time sym_attach() allocates np.
    3) Make sym_attach() copy sym_device::s.{ioaddr,ramaddr} to np before
       calling any function that can fail so that sym_free_resources()
       will do the unmap instead of sym_iounmap_device().
    
    Also fixed by this patch:
    During sym2_probe(), if sym_check_raid() returns nonzero, then
    pci_release_regions() is never called.
    Signed-off-by: default avatarTony Battersby <tonyb@cybernetics.com>
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
    a71d035d
sym_glue.c 53.1 KB