Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933452AbcKVOrO (ORCPT ); Tue, 22 Nov 2016 09:47:14 -0500 Received: from smtp.nue.novell.com ([195.135.221.5]:43823 "EHLO smtp.nue.novell.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932949AbcKVOrM (ORCPT ); Tue, 22 Nov 2016 09:47:12 -0500 Subject: Re: [PATCH] scsi: hpsa: fix uninitialized variable access To: Arnd Bergmann , "Martin K. Petersen" References: <20161122143303.1871678-1-arnd@arndb.de> Cc: Don Brace , "James E.J. Bottomley" , Kevin Barnett , Scott Teel , Justin Lindley , esc.storagedev@microsemi.com, linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org From: Hannes Reinecke Message-ID: <04f7cd82-8979-0f08-8b16-3cf863795ccf@suse.com> Date: Tue, 22 Nov 2016 15:47:09 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <20161122143303.1871678-1-arnd@arndb.de> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2085 Lines: 68 On 11/22/2016 03:32 PM, Arnd Bergmann wrote: > A bugfix has left the 'sd' variable uninitialized: > > drivers/scsi/hpsa.c: In function 'hpsa_slave_alloc': > drivers/scsi/hpsa.c:2033:5: error: 'sd' may be used uninitialized in this function [-Werror=maybe-uninitialized] > > This reverts back to calling lookup_hpsa_scsi_dev() for the > HPSA_PHYSICAL_DEVICE_BUS case, but also keeps doing that when > hpsa_find_device_by_sas_rphy() returns NULL, as is currently > done. > > The patch that caused this is marked for stable backports, > so this one has to be backported on top as well. > > Fixes: 4eb307f7b18d ("scsi: hpsa: use bus '3' for legacy HBA devices") > Signed-off-by: Arnd Bergmann > --- > I did not try hard to figure out what the correct behavior > should be, so please treat this as a bugreport that might contain > the right fix. > --- > drivers/scsi/hpsa.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c > index ea64c01f3d42..d17ee63045c3 100644 > --- a/drivers/scsi/hpsa.c > +++ b/drivers/scsi/hpsa.c > @@ -2029,7 +2029,10 @@ static int hpsa_slave_alloc(struct scsi_device *sdev) > sd->target = sdev_id(sdev); > sd->lun = sdev->lun; > } > + } else { > + sd = NULL; > } > + > if (!sd) > sd = lookup_hpsa_scsi_dev(h, sdev_channel(sdev), > sdev_id(sdev), sdev->lun); > Hmm. I'd prefer this: diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c index 05f7782..ee6f852 100644 --- a/drivers/scsi/hpsa.c +++ b/drivers/scsi/hpsa.c @@ -2031,7 +2031,7 @@ static struct hpsa_scsi_dev_t *lookup_hpsa_scsi_dev(struct ctlr_info *h, static int hpsa_slave_alloc(struct scsi_device *sdev) { - struct hpsa_scsi_dev_t *sd; + struct hpsa_scsi_dev_t *sd = NULL; unsigned long flags; struct ctlr_info *h; Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage hare@suse.com +49 911 74053 688 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 N?rnberg GF: F. Imend?rffer, J. Smithard, D. Upmanyu, G. Norton HRB 21284 (AG N?rnberg)