if (ahd->platform_data->host != NULL) { scsi_remove_host(ahd->platform_data->host); scsi_host_put(ahd->platform_data->host); }  
ahd_platform_free(struct ahd_softc *ahd){	struct scsi_target *starget;	int i, j;	if (ahd->platform_data != NULL) {		if (ahd->platform_data->host != NULL) {			scsi_remove_host(ahd->platform_data->host);			scsi_host_put(ahd->platform_data->host);		}		/* destroy all of the device and target objects */		for (i = 0; i < AHD_NUM_TARGETS; i++) {			starget = ahd->platform_data->starget[i];			if (starget != NULL) {				for (j = 0; j < AHD_NUM_LUNS; j++) {					struct ahd_linux_target *targ =						scsi_transport_target_data(starget);					if (targ->sdev[j] == NULL)						continue;					targ->sdev[j] = NULL;				}				ahd->platform_data->starget[i] = NULL;			}		}		if (ahd->platform_data->irq != AHD_LINUX_NOIRQ)			free_irq(ahd->platform_data->irq, ahd);		if (ahd->tags[0] == BUS_SPACE_PIO		 && ahd->bshs[0].ioport != 0)			release_region(ahd->bshs[0].ioport, 256);		if (ahd->tags[1] == BUS_SPACE_PIO		 && ahd->bshs[1].ioport != 0)			release_region(ahd->bshs[1].ioport, 256);		if (ahd->tags[0] == BUS_SPACE_MEMIO		 && ahd->bshs[0].maddr != NULL) {			iounmap(ahd->bshs[0].maddr);			release_mem_region(ahd->platform_data->mem_busaddr,					   0x1000);		}		free(ahd->platform_data, M_DEVBUF);	}}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/97af50f60ff1202b0dd9ce481d4cf98c6a578bec/aic79xx_osm.c/buggy/drivers/scsi/aic7xxx/aic79xx_osm.c