[SCSI] aic7xxx: leaves timer running on init failure
authorHannes Reinecke <hare@suse.de>
Wed, 25 Mar 2009 10:19:37 +0000 (11:19 +0100)
committerJames Bottomley <James.Bottomley@HansenPartnership.com>
Fri, 3 Apr 2009 14:22:55 +0000 (09:22 -0500)
commita2f5bfcf711aa72ad5587b533a1909334c2533a4
treebaf8be9fb21f8890087981bcd6fb173c1c65d238
parentc59c61493febac295e71a2c017fc0075620dbc6f
[SCSI] aic7xxx: leaves timer running on init failure

aic79xx leaves timers inserted when ahd_init() (which inserts
two timers at its very end) succeeds but ahd_pci_map_int()
fails. In this case ahd->init_level gets incremented to 5 only
when that function succeeds, but ahd_free() calls ahd_shutdown()
only when ahd->init_level == 5, and ahd_shutdown() is where the
timers get removed. Since the freeing of the IRQ is not controlled
by ahd->init_level, we should increment init_level prior to
calling ahd_pci_map_int().

Reported-by: Jan Beulich <jbeulich@novell.com>
Signed-off-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
drivers/scsi/aic7xxx/aic79xx_pci.c
drivers/scsi/aic7xxx/aic7xxx_pci.c