From: Jesper Juhl <[email protected]>
Add scsi_add_host() failure handling for nsp32
and silence warning.
drivers/scsi/nsp32.c:2888: warning: ignoring return value of csi_add_host', declared with attribute warn_unused_result
Signed-off-by: Jesper Juhl <[email protected]>
---
drivers/scsi/nsp32.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletion(-)
--- linux-2.6.15-mm2-orig/drivers/scsi/nsp32.c 2006-01-07 14:46:18.000000000 +0100
+++ linux-2.6.15-mm2/drivers/scsi/nsp32.c 2006-01-10 14:07:00.000000000 +0100
@@ -2885,7 +2885,12 @@ static int nsp32_detect(struct scsi_host
}
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,73))
- scsi_add_host (host, &PCIDEV->dev);
+ ret = scsi_add_host (host, &PCIDEV->dev);
+ if (ret) {
+ printk(KERN_WARNING "nsp32: scsi_add_host failed\n");
+ scsi_host_put(host);
+ return ret;
+ }
scsi_scan_host(host);
#endif
pci_set_drvdata(PCIDEV, host);
PS. Please CC me on replies from linux-scsi since I'm not subscribed there.
--
Jesper Juhl
Dear Jesper,
At Tue, 10 Jan 2006 14:11:52 +0100,
Jesper Juhl wrote:
> Add scsi_add_host() failure handling for nsp32
> and silence warning.
> drivers/scsi/nsp32.c:2888: warning: ignoring return value of csi_add_host', declared with attribute warn_unused_result
Thanks for your report and patch. However, I think your patch is not
complete because the error route needs some additional clean up code.
> #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,73))
> - scsi_add_host (host, &PCIDEV->dev);
> + ret = scsi_add_host (host, &PCIDEV->dev);
> + if (ret) {
> + printk(KERN_WARNING "nsp32: scsi_add_host failed\n");
> + scsi_host_put(host);
> + return ret;
> + }
How about this patch instead?
-- gotom
Signed-off-by: GOTO Masanori <[email protected]>
--- drivers/scsi/nsp32.c.gotom 2006-01-13 00:41:09.000000000 +0900
+++ drivers/scsi/nsp32.c 2006-01-13 00:54:26.661567144 +0900
@@ -2885,12 +2885,19 @@
}
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,73))
- scsi_add_host (host, &PCIDEV->dev);
+ ret = scsi_add_host(host, &PCIDEV->dev);
+ if (ret) {
+ nsp32_msg(KERN_ERR, "failed to add scsi host");
+ goto free_region;
+ }
scsi_scan_host(host);
#endif
pci_set_drvdata(PCIDEV, host);
return DETECT_OK;
+ free_region:
+ release_region(host->io_port, host->n_io_port);
+
free_irq:
free_irq(host->irq, data);