diff options
| -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 682ca0b32b44..d0e9b54ab008 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) | |||
| 190 | static int | 190 | static int |
| 191 | aic7770_eisa_dev_remove(struct device *dev) | 191 | aic7770_eisa_dev_remove(struct device *dev) |
| 192 | { | 192 | { |
| 193 | struct ahc_softc *ahc; | 193 | struct ahc_softc *ahc = dev_get_drvata(dev); |
| 194 | u_long l; | 194 | u_long s; |
| 195 | 195 | ||
| 196 | /* | 196 | ahc_lock(ahc, &s); |
| 197 | * We should be able to just perform | 197 | ahc_intr_enable(ahc, FALSE); |
| 198 | * the free directly, but check our | 198 | ahc_unlock(ahc, &s); |
| 199 | * list for extra sanity. | 199 | ahc_free(ahc); |
| 200 | */ | ||
| 201 | ahc_list_lock(&l); | ||
| 202 | ahc = ahc_find_softc((struct ahc_softc *)dev->driver_data); | ||
| 203 | if (ahc != NULL) { | ||
| 204 | u_long s; | ||
| 205 | |||
| 206 | ahc_lock(ahc, &s); | ||
| 207 | ahc_intr_enable(ahc, FALSE); | ||
| 208 | ahc_unlock(ahc, &s); | ||
| 209 | ahc_free(ahc); | ||
| 210 | } | ||
| 211 | ahc_list_unlock(&l); | ||
| 212 | 200 | ||
| 213 | return (0); | 201 | return (0); |
| 214 | } | 202 | } |
diff --git a/drivers/scsi/aic7xxx/aic7xxx.h b/drivers/scsi/aic7xxx/aic7xxx.h index 8ff16fd8ed49..d094e7371734 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); | |||
| 1200 | int ahc_suspend(struct ahc_softc *ahc); | 1200 | int ahc_suspend(struct ahc_softc *ahc); |
| 1201 | int ahc_resume(struct ahc_softc *ahc); | 1201 | int ahc_resume(struct ahc_softc *ahc); |
| 1202 | void ahc_softc_insert(struct ahc_softc *); | 1202 | void ahc_softc_insert(struct ahc_softc *); |
| 1203 | struct ahc_softc *ahc_find_softc(struct ahc_softc *ahc); | ||
| 1204 | void ahc_set_unit(struct ahc_softc *, int); | 1203 | void ahc_set_unit(struct ahc_softc *, int); |
| 1205 | void ahc_set_name(struct ahc_softc *, char *); | 1204 | void ahc_set_name(struct ahc_softc *, char *); |
| 1206 | void ahc_alloc_scbs(struct ahc_softc *ahc); | 1205 | 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 9a6b4a570aa7..8a2bb6f8d77b 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) | |||
| 3934 | ahc->init_level++; | 3934 | ahc->init_level++; |
| 3935 | } | 3935 | } |
| 3936 | 3936 | ||
| 3937 | /* | ||
| 3938 | * Verify that the passed in softc pointer is for a | ||
| 3939 | * controller that is still configured. | ||
| 3940 | */ | ||
| 3941 | struct ahc_softc * | ||
| 3942 | ahc_find_softc(struct ahc_softc *ahc) | ||
| 3943 | { | ||
| 3944 | struct ahc_softc *list_ahc; | ||
| 3945 | |||
| 3946 | TAILQ_FOREACH(list_ahc, &ahc_tailq, links) { | ||
| 3947 | if (list_ahc == ahc) | ||
| 3948 | return (ahc); | ||
| 3949 | } | ||
| 3950 | return (NULL); | ||
| 3951 | } | ||
| 3952 | |||
| 3953 | void | 3937 | void |
| 3954 | ahc_set_unit(struct ahc_softc *ahc, int unit) | 3938 | ahc_set_unit(struct ahc_softc *ahc, int unit) |
| 3955 | { | 3939 | { |
diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm_pci.c b/drivers/scsi/aic7xxx/aic7xxx_osm_pci.c index 9cd4fe1c4ef2..89d737ee551a 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 = { | |||
| 140 | static void | 140 | static void |
| 141 | ahc_linux_pci_dev_remove(struct pci_dev *pdev) | 141 | ahc_linux_pci_dev_remove(struct pci_dev *pdev) |
| 142 | { | 142 | { |
| 143 | struct ahc_softc *ahc; | 143 | struct ahc_softc *ahc = pci_get_drvdata(pdev); |
| 144 | u_long l; | 144 | u_long s; |
| 145 | 145 | ||
| 146 | /* | 146 | ahc_list_lock(&s); |
| 147 | * We should be able to just perform | 147 | TAILQ_REMOVE(&ahc_tailq, ahc, links); |
| 148 | * the free directly, but check our | 148 | ahc_list_unlock(&s); |
| 149 | * list for extra sanity. | ||
| 150 | */ | ||
| 151 | ahc_list_lock(&l); | ||
| 152 | ahc = ahc_find_softc((struct ahc_softc *)pci_get_drvdata(pdev)); | ||
| 153 | if (ahc != NULL) { | ||
| 154 | u_long s; | ||
| 155 | 149 | ||
| 156 | TAILQ_REMOVE(&ahc_tailq, ahc, links); | 150 | ahc_lock(ahc, &s); |
| 157 | ahc_list_unlock(&l); | 151 | ahc_intr_enable(ahc, FALSE); |
| 158 | ahc_lock(ahc, &s); | 152 | ahc_unlock(ahc, &s); |
| 159 | ahc_intr_enable(ahc, FALSE); | 153 | ahc_free(ahc); |
| 160 | ahc_unlock(ahc, &s); | ||
| 161 | ahc_free(ahc); | ||
| 162 | } else | ||
| 163 | ahc_list_unlock(&l); | ||
| 164 | } | 154 | } |
| 165 | 155 | ||
| 166 | static int | 156 | static int |
diff --git a/drivers/scsi/aic7xxx/aic7xxx_proc.c b/drivers/scsi/aic7xxx/aic7xxx_proc.c index 9c7f1056710d..ab4469d83fb1 100644 --- a/drivers/scsi/aic7xxx/aic7xxx_proc.c +++ b/drivers/scsi/aic7xxx/aic7xxx_proc.c | |||
| @@ -297,20 +297,13 @@ int | |||
| 297 | ahc_linux_proc_info(struct Scsi_Host *shost, char *buffer, char **start, | 297 | ahc_linux_proc_info(struct Scsi_Host *shost, char *buffer, char **start, |
| 298 | off_t offset, int length, int inout) | 298 | off_t offset, int length, int inout) |
| 299 | { | 299 | { |
| 300 | struct ahc_softc *ahc; | 300 | struct ahc_softc *ahc = *(struct ahc_softc **)shost->hostdata; |
| 301 | struct info_str info; | 301 | struct info_str info; |
| 302 | char ahc_info[256]; | 302 | char ahc_info[256]; |
| 303 | u_long s; | ||
| 304 | u_int max_targ; | 303 | u_int max_targ; |
| 305 | u_int i; | 304 | u_int i; |
| 306 | int retval; | 305 | int retval; |
| 307 | 306 | ||
| 308 | retval = -EINVAL; | ||
| 309 | ahc_list_lock(&s); | ||
| 310 | ahc = ahc_find_softc(*(struct ahc_softc **)shost->hostdata); | ||
| 311 | if (ahc == NULL) | ||
| 312 | goto done; | ||
| 313 | |||
| 314 | /* Has data been written to the file? */ | 307 | /* Has data been written to the file? */ |
| 315 | if (inout == TRUE) { | 308 | if (inout == TRUE) { |
| 316 | retval = ahc_proc_write_seeprom(ahc, buffer, length); | 309 | retval = ahc_proc_write_seeprom(ahc, buffer, length); |
| @@ -372,6 +365,5 @@ ahc_linux_proc_info(struct Scsi_Host *shost, char *buffer, char **start, | |||
| 372 | } | 365 | } |
| 373 | retval = info.pos > info.offset ? info.pos - info.offset : 0; | 366 | retval = info.pos > info.offset ? info.pos - info.offset : 0; |
| 374 | done: | 367 | done: |
| 375 | ahc_list_unlock(&s); | ||
| 376 | return (retval); | 368 | return (retval); |
| 377 | } | 369 | } |
