--- linux/drivers/scsi/qlogicfas.c.orig	2003-10-17 16:49:30.000000000 -0200
+++ linux/drivers/scsi/qlogicfas.c	2003-10-17 16:54:06.000000000 -0200
@@ -650,9 +650,6 @@
 	} else
 		printk(KERN_INFO "Ql: Using preset IRQ %d\n", qlirq);
 
-	if (qlirq >= 0 && !request_irq(qlirq, do_ql_ihandl, 0, "qlogicfas", NULL))
-		host->can_queue = 1;
-
 	hreg = scsi_register(host, 0);	/* no host data */
 	if (!hreg)
 		goto err_release_mem;
@@ -666,12 +663,20 @@
 		"Qlogicfas Driver version 0.46, chip %02X at %03X, IRQ %d, TPdma:%d",
 		qltyp, qbase, qlirq, QL_TURBO_PDMA);
 
+	if (request_irq(qlirq, do_ql_ihandl, 0, "qlogicfas", hreg))
+		goto free_scsi_host;
+
 	return hreg;
 
+free_scsi_host:
+#ifdef PCMCIA
+	scsi_host_put(hreg);
+#else
+	scsi_unregister(hreg);
+#endif
+
 err_release_mem:
 	release_region(qbase, 0x10);
-	if (host->can_queue)
-		free_irq(qlirq, do_ql_ihandl);
 	return NULL;;
 
 }
