diff options
author | Christoph Hellwig <hch@lst.de> | 2005-06-10 22:14:30 (GMT) |
---|---|---|
committer | James Bottomley <jejb@titanic.(none)> | 2005-06-11 23:43:48 (GMT) |
commit | 3d65692aed727c7fb4105f03795781ace437a84e (patch) | |
tree | adbbd860235025d102a2aeeec130f0687d180d1e | |
parent | 6bc9dace767f1fffdf975b3398b3c4e37cd5ae18 (diff) | |
download | linux-3d65692aed727c7fb4105f03795781ace437a84e.tar.xz |
[SCSI] aic7xxx: remove ahc_find_softc
there's absolutely no reason not to trust the driver private data
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
-rw-r--r-- | drivers/scsi/aic7xxx/aic7770_osm.c | 24 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic7xxx.h | 1 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic7xxx_core.c | 16 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic7xxx_osm_pci.c | 28 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic7xxx_proc.c | 10 |
5 files changed, 16 insertions, 63 deletions
diff --git a/drivers/scsi/aic7xxx/aic7770_osm.c b/drivers/scsi/aic7xxx/aic7770_osm.c index 682ca0b..d0e9b54 100644 --- a/drivers/scsi/aic7xxx/aic7770_osm.c +++ b/drivers/scsi/aic7xxx/aic7770_osm.c @@ -190,25 +190,13 @@ aic7770_eisa_dev_probe(struct device *dev) static int aic7770_eisa_dev_remove(struct device *dev) { - struct ahc_softc *ahc; - u_long l; + struct ahc_softc *ahc = dev_get_drvata(dev); + u_long s; - /* - * We should be able to just perform - * the free directly, but check our - * list for extra sanity. - */ - ahc_list_lock(&l); - ahc = ahc_find_softc((struct ahc_softc *)dev->driver_data); - if (ahc != NULL) { - u_long s; - - ahc_lock(ahc, &s); - ahc_intr_enable(ahc, FALSE); - ahc_unlock(ahc, &s); - ahc_free(ahc); - } - ahc_list_unlock(&l); + ahc_lock(ahc, &s); + ahc_intr_enable(ahc, FALSE); + ahc_unlock(ahc, &s); + ahc_free(ahc); return (0); } diff --git a/drivers/scsi/aic7xxx/aic7xxx.h b/drivers/scsi/aic7xxx/aic7xxx.h index 8ff16fd..d094e73 100644 --- a/drivers/scsi/aic7xxx/aic7xxx.h +++ b/drivers/scsi/aic7xxx/aic7xxx.h @@ -1200,7 +1200,6 @@ void ahc_pause_and_flushwork(struct ahc_softc *ahc); int ahc_suspend(struct ahc_softc *ahc); int ahc_resume(struct ahc_softc *ahc); void ahc_softc_insert(struct ahc_softc *); -struct ahc_softc *ahc_find_softc(struct ahc_softc *ahc); void ahc_set_unit(struct ahc_softc *, int); void ahc_set_name(struct ahc_softc *, char *); void ahc_alloc_scbs(struct ahc_softc *ahc); diff --git a/drivers/scsi/aic7xxx/aic7xxx_core.c b/drivers/scsi/aic7xxx/aic7xxx_core.c index 9a6b4a5..8a2bb6f 100644 --- a/drivers/scsi/aic7xxx/aic7xxx_core.c +++ b/drivers/scsi/aic7xxx/aic7xxx_core.c @@ -3934,22 +3934,6 @@ ahc_softc_insert(struct ahc_softc *ahc) ahc->init_level++; } -/* - * Verify that the passed in softc pointer is for a - * controller that is still configured. - */ -struct ahc_softc * -ahc_find_softc(struct ahc_softc *ahc) -{ - struct ahc_softc *list_ahc; - - TAILQ_FOREACH(list_ahc, &ahc_tailq, links) { - if (list_ahc == ahc) - return (ahc); - } - return (NULL); -} - void ahc_set_unit(struct ahc_softc *ahc, int unit) { diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm_pci.c b/drivers/scsi/aic7xxx/aic7xxx_osm_pci.c index 9cd4fe1..89d737e 100644 --- a/drivers/scsi/aic7xxx/aic7xxx_osm_pci.c +++ b/drivers/scsi/aic7xxx/aic7xxx_osm_pci.c @@ -140,27 +140,17 @@ struct pci_driver aic7xxx_pci_driver = { static void ahc_linux_pci_dev_remove(struct pci_dev *pdev) { - struct ahc_softc *ahc; - u_long l; + struct ahc_softc *ahc = pci_get_drvdata(pdev); + u_long s; - /* - * We should be able to just perform - * the free directly, but check our - * list for extra sanity. - */ - ahc_list_lock(&l); - ahc = ahc_find_softc((struct ahc_softc *)pci_get_drvdata(pdev)); - if (ahc != NULL) { - u_long s; + ahc_list_lock(&s); + TAILQ_REMOVE(&ahc_tailq, ahc, links); + ahc_list_unlock(&s); - TAILQ_REMOVE(&ahc_tailq, ahc, links); - ahc_list_unlock(&l); - ahc_lock(ahc, &s); - ahc_intr_enable(ahc, FALSE); - ahc_unlock(ahc, &s); - ahc_free(ahc); - } else - ahc_list_unlock(&l); + ahc_lock(ahc, &s); + ahc_intr_enable(ahc, FALSE); + ahc_unlock(ahc, &s); + ahc_free(ahc); } static int diff --git a/drivers/scsi/aic7xxx/aic7xxx_proc.c b/drivers/scsi/aic7xxx/aic7xxx_proc.c index 9c7f105..ab4469d 100644 --- a/drivers/scsi/aic7xxx/aic7xxx_proc.c +++ b/drivers/scsi/aic7xxx/aic7xxx_proc.c @@ -297,20 +297,13 @@ int ahc_linux_proc_info(struct Scsi_Host *shost, char *buffer, char **start, off_t offset, int length, int inout) { - struct ahc_softc *ahc; + struct ahc_softc *ahc = *(struct ahc_softc **)shost->hostdata; struct info_str info; char ahc_info[256]; - u_long s; u_int max_targ; u_int i; int retval; - retval = -EINVAL; - ahc_list_lock(&s); - ahc = ahc_find_softc(*(struct ahc_softc **)shost->hostdata); - if (ahc == NULL) - goto done; - /* Has data been written to the file? */ if (inout == TRUE) { retval = ahc_proc_write_seeprom(ahc, buffer, length); @@ -372,6 +365,5 @@ ahc_linux_proc_info(struct Scsi_Host *shost, char *buffer, char **start, } retval = info.pos > info.offset ? info.pos - info.offset : 0; done: - ahc_list_unlock(&s); return (retval); } |