Skip to content

Commit

Permalink
[SCSI] aic7xxx: leaves timer running on init failure
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Hannes Reinecke authored and James Bottomley committed Apr 3, 2009
1 parent c59c614 commit a2f5bfc
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 10 deletions.
6 changes: 2 additions & 4 deletions drivers/scsi/aic7xxx/aic79xx_pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -377,14 +377,12 @@ ahd_pci_config(struct ahd_softc *ahd, const struct ahd_pci_identity *entry)
error = ahd_init(ahd);
if (error != 0)
return (error);
ahd->init_level++;

/*
* Allow interrupts now that we are completely setup.
*/
error = ahd_pci_map_int(ahd);
if (!error)
ahd->init_level++;
return error;
return ahd_pci_map_int(ahd);
}

#ifdef CONFIG_PM
Expand Down
8 changes: 2 additions & 6 deletions drivers/scsi/aic7xxx/aic7xxx_pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -960,16 +960,12 @@ ahc_pci_config(struct ahc_softc *ahc, const struct ahc_pci_identity *entry)
error = ahc_init(ahc);
if (error != 0)
return (error);
ahc->init_level++;

/*
* Allow interrupts now that we are completely setup.
*/
error = ahc_pci_map_int(ahc);
if (error != 0)
return (error);

ahc->init_level++;
return (0);
return ahc_pci_map_int(ahc);
}

/*
Expand Down

0 comments on commit a2f5bfc

Please sign in to comment.