make drivers/scsi/megaraid.c check ioremaps return code (241p9)
Subsystems (2)
PATCH 1/1 make drivers/scsi/megaraid.c check ioremaps return code (241p9)
Hi.
The following patch makes drivers/scsi/megaraid.c check the return code of ioremap and converts the affected code paths to forward gotos error handling. It applies cleanly against ac10 and with a little fuzz against 241p9.
Please comment.
drivers/scsi/megaraid.c +18 -6
@@ -1491,15 +1491,19 @@ megaBase =pci_resource_start (pdev,0 ); megaIrq = pdev->irq; -if (flag &BOARD_QUARTZ ) +if (flag &BOARD_QUARTZ ) { megaBase = (long )ioremap (megaBase,128 ); +if (!megaBase) +continue ; + }else megaBase +=0x10 ;/* Initialize SCSI Host structure */ host =scsi_register (pHostTmpl,sizeof (mega_host_config));if (host ==NULL ) -continue ; + goto err_unmap; + megaCfg = (mega_host_config *) host->hostdata;memset (megaCfg,0 ,sizeof (mega_host_config));
@@ -1528,8 +1532,7 @@/* Request our IO Range */ if (!request_region (megaBase,16 ,"megaraid" )) {printk (KERN_WARNING "megaraid: Couldn't register I/O range!" CRLFSTR ); -scsi_unregister (host); -continue ; + goto err_unregister; } }
@@ -1538,8 +1541,7 @@ "megaraid", megaCfg)) {printk (KERN_WARNING "megaraid: Couldn't register IRQ %d!" CRLFSTR , megaIrq); -scsi_unregister (host); -continue ; + goto err_release; }mega_register_mailbox (megaCfg,virt_to_bus ((void *) &megaCfg->mailbox64));
@@ -1585,6 +1587,16 @@ } numFound++; +continue ; + + err_release: +if (!flag =BOARD_QUARTZ ) +release_region (megaBase,16 ); + err_unregister: +scsi_unregister (host); + err_unmap: +if (flag &BOARD_QUARTZ ) +iounmap (megaBase,128 ); }return numFound; }
Signature · 9 lines
Regards,
Rasmus([email protected])
It's a recession when your neighbour loses his job; it's a depression
when you lose yours. -- Harry S. Truman
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/On Tue, Jan 23, 2001 at 12:45:20AM +0100, Rasmus Andersen wrote:
(This is another updated patch with the comments from the earlier mail still valid.)
drivers/scsi/megaraid.c +18 -6
@@ -1491,15 +1491,19 @@ megaBase =pci_resource_start (pdev,0 ); megaIrq = pdev->irq; -if (flag &BOARD_QUARTZ ) +if (flag &BOARD_QUARTZ ) { megaBase = (long )ioremap (megaBase,128 ); +if (!megaBase) +continue ; + }else megaBase +=0x10 ;/* Initialize SCSI Host structure */ host =scsi_register (pHostTmpl,sizeof (mega_host_config));if (host ==NULL ) -continue ; + goto err_unmap; + megaCfg = (mega_host_config *) host->hostdata;memset (megaCfg,0 ,sizeof (mega_host_config));
@@ -1528,8 +1532,7 @@/* Request our IO Range */ if (!request_region (megaBase,16 ,"megaraid" )) {printk (KERN_WARNING "megaraid: Couldn't register I/O range!" CRLFSTR ); -scsi_unregister (host); -continue ; + goto err_unregister; } }
@@ -1538,8 +1541,7 @@ "megaraid", megaCfg)) {printk (KERN_WARNING "megaraid: Couldn't register IRQ %d!" CRLFSTR , megaIrq); -scsi_unregister (host); -continue ; + goto err_release; }mega_register_mailbox (megaCfg,virt_to_bus ((void *) &megaCfg->mailbox64));
@@ -1585,6 +1587,16 @@ } numFound++; +continue ; + + err_release: +if (flag !=BOARD_QUARTZ ) +release_region (megaBase,16 ); + err_unregister: +scsi_unregister (host); + err_unmap: +if (flag &BOARD_QUARTZ ) +iounmap ((void *)megaBase); }return numFound; }
Signature · 9 lines
Regards,
Rasmus([email protected])
Half this game is ninety percent mental.
-Philadelphia Phillies manager Danny Ozark
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/