int gdth_release(struct Scsi_Host *shp) 
static int gdth_release(struct Scsi_Host *shp) 
int gdth_release(struct Scsi_Host *shp){    int hanum;    gdth_ha_str *ha;    TRACE2(("gdth_release()\n"));    if (NUMDATA(shp)->busnum == 0) {        hanum = NUMDATA(shp)->hanum;        ha    = HADATA(gdth_ctr_tab[hanum]);        if (ha->sdev) {            scsi_free_host_dev(ha->sdev);            ha->sdev = NULL;        }        gdth_flush(hanum);        if (shp->irq) {            free_irq(shp->irq,ha);        }#ifndef __ia64__        if (shp->dma_channel != 0xff) {            free_dma(shp->dma_channel);        }#endif#ifdef INT_COAL        if (ha->coal_stat)            pci_free_consistent(ha->pdev, sizeof(gdth_coal_status) *                                MAXOFFSETS, ha->coal_stat, ha->coal_stat_phys);#endif        if (ha->pscratch)            pci_free_consistent(ha->pdev, GDTH_SCRATCH,                                 ha->pscratch, ha->scratch_phys);        if (ha->pmsg)            pci_free_consistent(ha->pdev, sizeof(gdth_msg_str),                                 ha->pmsg, ha->msg_phys);        if (ha->ccb_phys)            pci_unmap_single(ha->pdev,ha->ccb_phys,                             sizeof(gdth_cmd_str),PCI_DMA_BIDIRECTIONAL);        gdth_ctr_released++;        TRACE2(("gdth_release(): HA %d of %d\n",                 gdth_ctr_released, gdth_ctr_count));        if (gdth_ctr_released == gdth_ctr_count) {#ifdef GDTH_STATISTICS            del_timer(&gdth_timer);#endif            unregister_chrdev(major,"gdth");            unregister_reboot_notifier(&gdth_notifier);        }    }    scsi_unregister(shp);    return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/8e8790415e91964096f862a58cacb55d2bc9a817/gdth.c/buggy/drivers/scsi/gdth.c