This patch fixes two bugs:
1) rmmod sym53c8xx uses shost after freeing it with
   scsi_put_host(shost).
2) insmod sym53c8xx doesn't call scsi_put_host(shost) if
   scsi_add_host() fails, causing a memory leak on the error path.
Signed-off-by: Tony Battersby <tonyb@cybernetics.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
        OUTB(np, nc_istat, 0);
 
        sym_free_resources(np, pdev);
+       scsi_host_put(shost);
 
        return 1;
 }
        struct Scsi_Host *shost = pci_get_drvdata(pdev);
 
        scsi_remove_host(shost);
-       scsi_host_put(shost);
        sym_detach(shost, pdev);
        pci_release_regions(pdev);
        pci_disable_device(pdev);