[SCSI] mpt3sas: fix cleanup on controller resource mapping failure
authorJoe Lawrence <joe.lawrence@stratus.com>
Thu, 8 Aug 2013 20:45:39 +0000 (16:45 -0400)
committerJames Bottomley <JBottomley@Parallels.com>
Mon, 26 Aug 2013 14:53:45 +0000 (18:53 +0400)
commitcf9bd21a41bd999ac6a0b72b549839e218ad5f31
treea92825d8db84b4d9bc6f0b02c3855a2f6bf1f6ea
parent3b3e6f8df3b03642d6705d1db84842c24415b21f
[SCSI] mpt3sas: fix cleanup on controller resource mapping failure

If mpt3sas_base_map_resources takes an early error path then its
counterpart, mpt3sas_base_free_resources needs to be careful about
cleaning up:

  1 - _base_mask_interrupts and _base_make_ioc_ready require memory
      mapped I/O registers, make sure that this is true.

  2 - _base_free_irq iterates over the adapter's reply_queue_list, so
      move this list head initialization out of _base_enable_msix to
      _scsih_probe so this will always be safe.

  3 - check that the controller PCI device and its BARs have been
      enabled before disabling them.

Signed-off-by: Joe Lawrence <joe.lawrence@stratus.com>
Acked-by: Sreekanth Reddy <Sreekanth.Reddy@lsi.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/mpt3sas/mpt3sas_base.c
drivers/scsi/mpt3sas/mpt3sas_scsih.c