fix warning and missing failure handling for scsi_add_host in aic7xxx driver
Subsystems (2)
PATCH 1/1 fix warning and missing failure handling for scsi_add_host in aic7xxx driver
Hi,
Here's a patch to fix a compiler warning and problem with missing failure handling of scsi_add_host noted in comment in aic7xxx_osm
The warning I see (with 2.6.15-rc5-git3) is this one:drivers/scsi/aic7xxx/aic7xxx_osm.c:1100: warning: ignoring return value of csi_add_host', declared with attribute warn_unused_result
The patch has seen the following testing:
- compile tested
- boot tested on a machine using the AIC7XXX driver
Please review and consider for inclusion.
---
drivers/scsi/aic7xxx/aic7xxx_osm.c | 22 +++++++++++++++++----- 1 files changed, 17 insertions(+), 5 deletions(-)
drivers/scsi/aic7xxx/aic7xxx_osm.c +17 -5
@@ -1061,10 +1061,11 @@ uint32_t aic7xxx_verbose;int ahc_linux_register_host (struct ahc_softc *ahc,struct scsi_host_template *template) { -char buf[80 ]; -struct Scsi_Host *host; +char buf[80 ]; +struct Scsi_Host *host;char *new_name; -u_long s; +u_long s; +int retval =0 ; template->name = ahc->description; host =scsi_host_alloc (template,sizeof (struct ahc_softc *));
@@ -1097,9 +1098,20 @@ ahc_linux_register_host(struct ahc_softc host->transportt = ahc_linux_transport_template; -scsi_add_host (host, (ahc->dev_softc ? &ahc->dev_softc->dev :NULL ));/* XXX handle failure */ + retval =scsi_add_host (host, + (ahc->dev_softc ? &ahc->dev_softc->dev :NULL )); +if (retval) { +printk (KERN_ERR "aic7xxx: scsi_add_host failed\n" ); + goto free_and_out; + } +scsi_scan_host (host); -return (0 ); + +out: +return retval; +free_and_out: +scsi_remove_host (host); + goto out; }/*
drivers/scsi/aic7xxx/aic7xxx_osm.c ahc_linux_register_host(struct ahc_softc · line 1114
Quoted 13 lines · Jesper Juhl
drivers/scsi/aic7xxx/aic7xxx_osm.c +11
-1+if (retval) { +printk (KERN_ERR "aic7xxx: scsi_add_host failed\n" ); + goto free_and_out; + } +scsi_scan_host (host); -return (0 ); + +out: +return retval; +free_and_out: +scsi_remove_host (host); + goto out;
I'm not incredibly keen on all this jumping around for no reason. If there's a normal out and an error out, then fine, but in this case the if (retval) { } could contain the entirety of the error path with an else for the normal path.
scsi_remove_host() is the wrong API, it should be scsi_host_put() (for an allocated but un added host).
James
Quoted 11 lines · James Bottomley
Quoted 10 lines · Jesper Juhl
drivers/scsi/aic7xxx/aic7xxx_osm.c +8
-1+if (retval) { +printk (KERN_ERR "aic7xxx: scsi_add_host failed\n" ); + goto free_and_out; + } +scsi_scan_host (host); -return (0 ); + +out: +return retval;
Quoted 9 lines
drivers/scsi/aic7xxx/aic7xxx_osm.c ahc_linux_register_host(struct ahc_softc · line 1114
Quoted 3 lines
drivers/scsi/aic7xxx/aic7xxx_osm.c +3
-0+free_and_out: +scsi_remove_host (host); + goto out;I'm not incredibly keen on all this jumping around for no reason. If there's a normal out and an error out, then fine, but in this case the if (retval) { } could contain the entirety of the error path with an else for the normal path.
Ok, I'll change that.
Quoted 3 lines
scsi_remove_host()is the wrong API, it should bescsi_host_put()(for an allocated but un added host).
Ohh, I misunderstood things then, I'll correct that.
I'll send a new patch later today when I get home from work.
Thank you for taking a look at the patch and your feedback.
--
Jesper Juhl <[email protected]>
Don't top-post http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please http://www.expita.com/nomime.html
Quoted 1 line · Jesper Juhl
I'll send a new patch later today when I get home from work.
Actually, the aic79xx has the identical problem, if you want to fix that too ...
James
Quoted 6 lines · James Bottomley
Quoted 1 line · Jesper Juhl
I'll send a new patch later today when I get home from work.
Actually, the aic79xx has the identical problem, if you want to fix that too ...
Sure, will do.
--
Jesper Juhl <[email protected]>
Don't top-post http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please http://www.expita.com/nomime.html