* [PATCH] aic94xx: Fixup compilation warning @ 2014-11-04 7:10 Hannes Reinecke 2014-11-06 6:37 ` Christoph Hellwig 2014-11-24 13:40 ` Christoph Hellwig 0 siblings, 2 replies; 8+ messages in thread From: Hannes Reinecke @ 2014-11-04 7:10 UTC (permalink / raw) To: James Bottomley; +Cc: Christoph Hellwig, linux-scsi, Hannes Reinecke gcc complained about an uninitialized warning. Signed-off-by: Hannes Reinecke <hare@suse.de> --- drivers/scsi/aic94xx/aic94xx_sds.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/scsi/aic94xx/aic94xx_sds.c b/drivers/scsi/aic94xx/aic94xx_sds.c index edb43fd..6f6a5b8 100644 --- a/drivers/scsi/aic94xx/aic94xx_sds.c +++ b/drivers/scsi/aic94xx/aic94xx_sds.c @@ -982,7 +982,7 @@ static int asd_process_ctrl_a_user(struct asd_ha_struct *asd_ha, struct asd_flash_dir *flash_dir) { int err, i; - u32 offs, size; + u32 offs = 0, size; struct asd_ll_el *el; struct asd_ctrla_phy_settings *ps; struct asd_ctrla_phy_settings dflt_ps; -- 1.8.5.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] aic94xx: Fixup compilation warning 2014-11-04 7:10 [PATCH] aic94xx: Fixup compilation warning Hannes Reinecke @ 2014-11-06 6:37 ` Christoph Hellwig 2014-11-24 13:40 ` Christoph Hellwig 1 sibling, 0 replies; 8+ messages in thread From: Christoph Hellwig @ 2014-11-06 6:37 UTC (permalink / raw) To: Hannes Reinecke; +Cc: James Bottomley, Christoph Hellwig, linux-scsi On Tue, Nov 04, 2014 at 08:10:59AM +0100, Hannes Reinecke wrote: > gcc complained about an uninitialized warning. Looks fine to me, although it very much is gcc overreacting. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] aic94xx: Fixup compilation warning 2014-11-04 7:10 [PATCH] aic94xx: Fixup compilation warning Hannes Reinecke 2014-11-06 6:37 ` Christoph Hellwig @ 2014-11-24 13:40 ` Christoph Hellwig 2014-11-24 15:39 ` James Bottomley 2014-11-24 16:04 ` Tomas Henzl 1 sibling, 2 replies; 8+ messages in thread From: Christoph Hellwig @ 2014-11-24 13:40 UTC (permalink / raw) To: Hannes Reinecke; +Cc: James Bottomley, Christoph Hellwig, linux-scsi Can someone review this trivial patch for me? Thanks! ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] aic94xx: Fixup compilation warning 2014-11-24 13:40 ` Christoph Hellwig @ 2014-11-24 15:39 ` James Bottomley 2014-11-24 15:55 ` Hannes Reinecke 2014-11-24 16:04 ` Tomas Henzl 1 sibling, 1 reply; 8+ messages in thread From: James Bottomley @ 2014-11-24 15:39 UTC (permalink / raw) To: hch@infradead.org; +Cc: linux-scsi@vger.kernel.org, hare@suse.de On Mon, 2014-11-24 at 05:40 -0800, Christoph Hellwig wrote: > Can someone review this trivial patch for me? Thanks! I don't really think we need reviewers for trivial patches, do we? However, the patch is clearly bogus. What's supposed to happen is that the unset variables (size and offs) get initialised to default values on error return, which is what's missing for offset, so this is the correct patch, isn't it? James --- diff --git a/drivers/scsi/aic94xx/aic94xx_sds.c b/drivers/scsi/aic94xx/aic94xx_sds.c index edb43fd..d11b4d7 100644 --- a/drivers/scsi/aic94xx/aic94xx_sds.c +++ b/drivers/scsi/aic94xx/aic94xx_sds.c @@ -1003,6 +1003,7 @@ static int asd_process_ctrl_a_user(struct asd_ha_struct *asd_ha, } size = sizeof(struct asd_ctrla_phy_settings); + offs = 0; ps = &dflt_ps; } ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] aic94xx: Fixup compilation warning 2014-11-24 15:39 ` James Bottomley @ 2014-11-24 15:55 ` Hannes Reinecke 0 siblings, 0 replies; 8+ messages in thread From: Hannes Reinecke @ 2014-11-24 15:55 UTC (permalink / raw) To: James Bottomley, hch@infradead.org; +Cc: linux-scsi@vger.kernel.org On 11/24/2014 04:39 PM, James Bottomley wrote: > On Mon, 2014-11-24 at 05:40 -0800, Christoph Hellwig wrote: >> Can someone review this trivial patch for me? Thanks! > > I don't really think we need reviewers for trivial patches, do we? > > However, the patch is clearly bogus. What's supposed to happen is that > the unset variables (size and offs) get initialised to default values on > error return, which is what's missing for offset, so this is the correct > patch, isn't it? > > James > > --- > diff --git a/drivers/scsi/aic94xx/aic94xx_sds.c b/drivers/scsi/aic94xx/aic94xx_sds.c > index edb43fd..d11b4d7 100644 > --- a/drivers/scsi/aic94xx/aic94xx_sds.c > +++ b/drivers/scsi/aic94xx/aic94xx_sds.c > @@ -1003,6 +1003,7 @@ static int asd_process_ctrl_a_user(struct asd_ha_struct *asd_ha, > } > > size = sizeof(struct asd_ctrla_phy_settings); > + offs = 0; > ps = &dflt_ps; > } > > Yep, that would work, as well. Reviewed-by: Hannes Reinecke <hare@suse.de> Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage hare@suse.de +49 911 74053 688 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: J. Hawn, J. Guild, F. Imendörffer, HRB 21284 (AG Nürnberg) -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] aic94xx: Fixup compilation warning 2014-11-24 13:40 ` Christoph Hellwig 2014-11-24 15:39 ` James Bottomley @ 2014-11-24 16:04 ` Tomas Henzl 2014-11-24 16:10 ` James Bottomley 1 sibling, 1 reply; 8+ messages in thread From: Tomas Henzl @ 2014-11-24 16:04 UTC (permalink / raw) To: Christoph Hellwig, Hannes Reinecke; +Cc: James Bottomley, linux-scsi On 11/24/2014 02:40 PM, Christoph Hellwig wrote: > Can someone review this trivial patch for me? Thanks! > The compiler complains because when asd_find_flash_de fails, the offs is not initialized. When that happens this code is invoked : if (err) { ASD_DPRINTK("couldn't find CTRL-A user settings section\n"); ASD_DPRINTK("Creating default CTRL-A user settings section\n"); dflt_ps.id0 = 'h'; dflt_ps.num_phys = 8; for (i =0; i < ASD_MAX_PHYS; i++) { memcpy(dflt_ps.phy_ent[i].sas_addr, asd_ha->hw_prof.sas_addr, SAS_ADDR_SIZE); dflt_ps.phy_ent[i].sas_link_rates = 0x98; dflt_ps.phy_ent[i].flags = 0x0; dflt_ps.phy_ent[i].sata_link_rates = 0x0; } size = sizeof(struct asd_ctrla_phy_settings); ps = &dflt_ps; the dflt_ps is initialized and the address assigned to 'ps', but none of them is used later } if (size == 0) goto out; err = -ENOMEM; el = kmalloc(size, GFP_KERNEL); if (!el) { ASD_DPRINTK("no mem for ctrla user settings section\n"); goto out; } err = asd_read_flash_seg(asd_ha, (void *)el, offs, size); if (err) { ASD_DPRINTK("couldn't read ctrla phy settings section\n"); goto out2; } err = -ENOENT; ps = asd_find_ll_by_id(el, 'h', 0xFF); here^ a new value is assigned to 'ps' I have no idea what was intended in the originally so - it looks likely, but how do we know that the '0' is a correct value for offs? Probably the error path is never used, this patch should fix the gcc warning too - @@ -990,20 +990,7 @@ static int asd_process_ctrl_a_user(struct asd_ha_struct *asd_ha, err = asd_find_flash_de(flash_dir, FLASH_DE_CTRL_A_USER, &offs, &size); if (err) { ASD_DPRINTK("couldn't find CTRL-A user settings section\n"); - ASD_DPRINTK("Creating default CTRL-A user settings section\n"); - - dflt_ps.id0 = 'h'; - dflt_ps.num_phys = 8; - for (i =0; i < ASD_MAX_PHYS; i++) { - memcpy(dflt_ps.phy_ent[i].sas_addr, - asd_ha->hw_prof.sas_addr, SAS_ADDR_SIZE); - dflt_ps.phy_ent[i].sas_link_rates = 0x98; - dflt_ps.phy_ent[i].flags = 0x0; - dflt_ps.phy_ent[i].sata_link_rates = 0x0; - } - - size = sizeof(struct asd_ctrla_phy_settings); - ps = &dflt_ps; + goto out; } if (size == 0) ................ Somebody with access to this hw might help and test "offs = 0;". It's a question whether we should touch old drivers at all. Tomas ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] aic94xx: Fixup compilation warning 2014-11-24 16:04 ` Tomas Henzl @ 2014-11-24 16:10 ` James Bottomley 2014-11-24 16:34 ` Tomas Henzl 0 siblings, 1 reply; 8+ messages in thread From: James Bottomley @ 2014-11-24 16:10 UTC (permalink / raw) To: thenzl@redhat.com Cc: linux-scsi@vger.kernel.org, hch@infradead.org, hare@suse.de On Mon, 2014-11-24 at 17:04 +0100, Tomas Henzl wrote: > On 11/24/2014 02:40 PM, Christoph Hellwig wrote: > > Can someone review this trivial patch for me? Thanks! > > > The compiler complains because when asd_find_flash_de fails, the offs is not initialized. > When that happens this code is invoked : > if (err) { > ASD_DPRINTK("couldn't find CTRL-A user settings section\n"); > ASD_DPRINTK("Creating default CTRL-A user settings section\n"); > > dflt_ps.id0 = 'h'; > dflt_ps.num_phys = 8; > for (i =0; i < ASD_MAX_PHYS; i++) { > memcpy(dflt_ps.phy_ent[i].sas_addr, > asd_ha->hw_prof.sas_addr, SAS_ADDR_SIZE); > dflt_ps.phy_ent[i].sas_link_rates = 0x98; > dflt_ps.phy_ent[i].flags = 0x0; > dflt_ps.phy_ent[i].sata_link_rates = 0x0; > } > > size = sizeof(struct asd_ctrla_phy_settings); > ps = &dflt_ps; > the dflt_ps is initialized and the address assigned to 'ps', but none of them is used later > } > > if (size == 0) > goto out; > > err = -ENOMEM; > el = kmalloc(size, GFP_KERNEL); > if (!el) { > ASD_DPRINTK("no mem for ctrla user settings section\n"); > goto out; > } > > err = asd_read_flash_seg(asd_ha, (void *)el, offs, size); > if (err) { > ASD_DPRINTK("couldn't read ctrla phy settings section\n"); > goto out2; > } > > err = -ENOENT; > ps = asd_find_ll_by_id(el, 'h', 0xFF); > here^ a new value is assigned to 'ps' > > > I have no idea what was intended in the originally so - it looks likely, but how do we know that > the '0' is a correct value for offs? Yes, it seems to be the default from the hw ... if you don't have any nvram then the phy setting are up first. > Probably the error path is never used, this patch should fix the gcc warning too - > @@ -990,20 +990,7 @@ static int asd_process_ctrl_a_user(struct asd_ha_struct *asd_ha, > err = asd_find_flash_de(flash_dir, FLASH_DE_CTRL_A_USER, &offs, &size); > if (err) { > ASD_DPRINTK("couldn't find CTRL-A user settings section\n"); > - ASD_DPRINTK("Creating default CTRL-A user settings section\n"); > - > - dflt_ps.id0 = 'h'; > - dflt_ps.num_phys = 8; > - for (i =0; i < ASD_MAX_PHYS; i++) { > - memcpy(dflt_ps.phy_ent[i].sas_addr, > - asd_ha->hw_prof.sas_addr, SAS_ADDR_SIZE); > - dflt_ps.phy_ent[i].sas_link_rates = 0x98; > - dflt_ps.phy_ent[i].flags = 0x0; > - dflt_ps.phy_ent[i].sata_link_rates = 0x0; > - } > - > - size = sizeof(struct asd_ctrla_phy_settings); > - ps = &dflt_ps; > + goto out; I did think about that. There does seem to be a definite reason to expect the phy setting read to succeed even though the nvram read failed. I think the reason was that there were some aic94xx cards that had no nvram and therefore always failed the read, but I can't find any evidence of that any more. James ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] aic94xx: Fixup compilation warning 2014-11-24 16:10 ` James Bottomley @ 2014-11-24 16:34 ` Tomas Henzl 0 siblings, 0 replies; 8+ messages in thread From: Tomas Henzl @ 2014-11-24 16:34 UTC (permalink / raw) To: James Bottomley Cc: linux-scsi@vger.kernel.org, hch@infradead.org, hare@suse.de On 11/24/2014 05:10 PM, James Bottomley wrote: > On Mon, 2014-11-24 at 17:04 +0100, Tomas Henzl wrote: >> On 11/24/2014 02:40 PM, Christoph Hellwig wrote: >>> Can someone review this trivial patch for me? Thanks! >>> >> The compiler complains because when asd_find_flash_de fails, the offs is not initialized. >> When that happens this code is invoked : >> if (err) { >> ASD_DPRINTK("couldn't find CTRL-A user settings section\n"); >> ASD_DPRINTK("Creating default CTRL-A user settings section\n"); >> >> dflt_ps.id0 = 'h'; >> dflt_ps.num_phys = 8; >> for (i =0; i < ASD_MAX_PHYS; i++) { >> memcpy(dflt_ps.phy_ent[i].sas_addr, >> asd_ha->hw_prof.sas_addr, SAS_ADDR_SIZE); >> dflt_ps.phy_ent[i].sas_link_rates = 0x98; >> dflt_ps.phy_ent[i].flags = 0x0; >> dflt_ps.phy_ent[i].sata_link_rates = 0x0; >> } >> >> size = sizeof(struct asd_ctrla_phy_settings); >> ps = &dflt_ps; >> the dflt_ps is initialized and the address assigned to 'ps', but none of them is used later >> } >> >> if (size == 0) >> goto out; >> >> err = -ENOMEM; >> el = kmalloc(size, GFP_KERNEL); >> if (!el) { >> ASD_DPRINTK("no mem for ctrla user settings section\n"); >> goto out; >> } >> >> err = asd_read_flash_seg(asd_ha, (void *)el, offs, size); >> if (err) { >> ASD_DPRINTK("couldn't read ctrla phy settings section\n"); >> goto out2; >> } >> >> err = -ENOENT; >> ps = asd_find_ll_by_id(el, 'h', 0xFF); >> here^ a new value is assigned to 'ps' >> >> >> I have no idea what was intended in the originally so - it looks likely, but how do we know that >> the '0' is a correct value for offs? > Yes, it seems to be the default from the hw ... if you don't have any > nvram then the phy setting are up first. > >> Probably the error path is never used, this patch should fix the gcc warning too - >> @@ -990,20 +990,7 @@ static int asd_process_ctrl_a_user(struct asd_ha_struct *asd_ha, >> err = asd_find_flash_de(flash_dir, FLASH_DE_CTRL_A_USER, &offs, &size); >> if (err) { >> ASD_DPRINTK("couldn't find CTRL-A user settings section\n"); >> - ASD_DPRINTK("Creating default CTRL-A user settings section\n"); >> - >> - dflt_ps.id0 = 'h'; >> - dflt_ps.num_phys = 8; >> - for (i =0; i < ASD_MAX_PHYS; i++) { >> - memcpy(dflt_ps.phy_ent[i].sas_addr, >> - asd_ha->hw_prof.sas_addr, SAS_ADDR_SIZE); >> - dflt_ps.phy_ent[i].sas_link_rates = 0x98; >> - dflt_ps.phy_ent[i].flags = 0x0; >> - dflt_ps.phy_ent[i].sata_link_rates = 0x0; >> - } >> - >> - size = sizeof(struct asd_ctrla_phy_settings); >> - ps = &dflt_ps; >> + goto out; > I did think about that. There does seem to be a definite reason to > expect the phy setting read to succeed even though the nvram read > failed. I think the reason was that there were some aic94xx cards that > had no nvram and therefore always failed the read, but I can't find any > evidence of that any more. The dead code there brought me to the idea that the error path was not much used... Using a '0' is at least so good as some random value, so I'm fine with your or Hannes's patch. > > James > > N�����r��y���b�X��ǧv�^�){.n�+����{���"�{ay�\x1dʇڙ�,j\a��f���h���z�\x1e�w���\f���j:+v���w�j�m����\a����zZ+�����ݢj"��!tml= -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2014-11-24 16:35 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-11-04 7:10 [PATCH] aic94xx: Fixup compilation warning Hannes Reinecke 2014-11-06 6:37 ` Christoph Hellwig 2014-11-24 13:40 ` Christoph Hellwig 2014-11-24 15:39 ` James Bottomley 2014-11-24 15:55 ` Hannes Reinecke 2014-11-24 16:04 ` Tomas Henzl 2014-11-24 16:10 ` James Bottomley 2014-11-24 16:34 ` Tomas Henzl
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox