From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934827AbdCWPE3 (ORCPT ); Thu, 23 Mar 2017 11:04:29 -0400 Received: from mout.kundenserver.de ([212.227.126.134]:50338 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934403AbdCWPE1 (ORCPT ); Thu, 23 Mar 2017 11:04:27 -0400 From: Arnd Bergmann To: Matthew Wilcox , Hannes Reinecke , "James E.J. Bottomley" , "Martin K. Petersen" Cc: Arnd Bergmann , linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] scsi: advansys: fix uninitialized data access Date: Thu, 23 Mar 2017 16:02:18 +0100 Message-Id: <20170323150226.249217-1-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 X-Provags-ID: V03:K0:Min6zjffhCECr4P5/YXLH3kYrJzWKZTuNutDnxZrflBLVI9r5VP FsUhrOjm16QcpJRaiVQVg/U47frUVOyhYMGeNQfzvMcZ7SEkjbdNM94U9pg9CFkW5tS35KD byg7z+eDscvdZz21ePJicJjlnxzRFNLqNEM+PyFOGOcvsG9tXGbqhMoelSfpWyyfyhhI8wW xJyVfJF5XOgRdphG4T6gQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:ukV9q44p/y4=:Xthei/6L/QaPZZqulE9Qde TdvaCtjRtAB2ACBzc22pwujkZenfi+nOYdht2UjhtYcn0yTQEo9/CPDoJpdJigeePFbHH7PWT EV7y8Khb/GSc1L5yAeE0zEPUpt7JBzxXFFOZMjr4MYt5FqOt7aLXBcPrc5C1yOMmUyOtaH0+4 Wthz6QPeqM1CN+NKuXu40P37AXJdoXa693L+hF+jIMMH7HtsE8VBk0m3RZGx9W5gUhQzemLhW /kPu0iNvouznUzSiiPW6QxlHP9LXrpIIvyplqIuI008PKD2GNT9m/cMfngxQBR6tnDNWL7i9h Y1wN5UNuNny0HHmaf52PxqQCYNFRX+pwu09v0E1S7cWuHYWaSMbJs3xKZ7uTRZmLYBF05da+/ TVmosaVh2CnCe1hKDn6+XkMtVOl29A4tJOGrrKS0I3UYroe+XUKlZ90bmPwyV76+XcrBP62UH LZnD42+45l9412w3F03/e/PlpRMXAoXMK/mXXmCZffA3JA9yi1d7ruJlgpChVLYpvo8hSlr9L 5bSSjYm824SXKY+YwNUllCgCdLbdipbYbzvb1sl10lqWGqZJUfOcIAVrLkPLKxsZtHPd3ciW0 ZlTIrtdYgW+Be6i7A+p3ViPP9Pzugs1jvCVcBd6qPd+Be7ZedFDRO6S+D+PWCoA61+eW/Qcgg n8rhQd25VN/sq+7AN2lCgN7HtcOLM7OWGJnOzklOWOXp79Xzu1kvPxvo/pzgiP40VFlM= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org gcc-7.0.1 now warns about a previously unnoticed access of uninitialized struct members: drivers/scsi/advansys.c: In function 'AscMsgOutSDTR': drivers/scsi/advansys.c:3860:26: error: '*((void *)&sdtr_buf+5)' may be used uninitialized in this function [-Werror=maybe-uninitialized] ((ushort)s_buffer[i + 1] << 8) | s_buffer[i]); ^ drivers/scsi/advansys.c:3860:26: error: '*((void *)&sdtr_buf+7)' may be used uninitialized in this function [-Werror=maybe-uninitialized] drivers/scsi/advansys.c:3860:26: error: '*((void *)&sdtr_buf+5)' may be used uninitialized in this function [-Werror=maybe-uninitialized] drivers/scsi/advansys.c:3860:26: error: '*((void *)&sdtr_buf+7)' may be used uninitialized in this function [-Werror=maybe-uninitialized] The code has existed in this exact form at least since v2.6.12, and the warning seems correct. This uses named initializers to ensure we initialize all members of the structure. Signed-off-by: Arnd Bergmann --- drivers/scsi/advansys.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/drivers/scsi/advansys.c b/drivers/scsi/advansys.c index 81dd0927246b..24e57e770432 100644 --- a/drivers/scsi/advansys.c +++ b/drivers/scsi/advansys.c @@ -6291,18 +6291,17 @@ static uchar AscGetSynPeriodIndex(ASC_DVC_VAR *asc_dvc, uchar syn_time) static uchar AscMsgOutSDTR(ASC_DVC_VAR *asc_dvc, uchar sdtr_period, uchar sdtr_offset) { - EXT_MSG sdtr_buf; - uchar sdtr_period_index; - PortAddr iop_base; - - iop_base = asc_dvc->iop_base; - sdtr_buf.msg_type = EXTENDED_MESSAGE; - sdtr_buf.msg_len = MS_SDTR_LEN; - sdtr_buf.msg_req = EXTENDED_SDTR; - sdtr_buf.xfer_period = sdtr_period; + PortAddr iop_base = asc_dvc->iop_base; + uchar sdtr_period_index = AscGetSynPeriodIndex(asc_dvc, sdtr_period); + EXT_MSG sdtr_buf = { + .msg_type = EXTENDED_MESSAGE, + .msg_len = MS_SDTR_LEN, + .msg_req = EXTENDED_SDTR, + .xfer_period = sdtr_period, + .req_ack_offset = sdtr_offset, + }; sdtr_offset &= ASC_SYN_MAX_OFFSET; - sdtr_buf.req_ack_offset = sdtr_offset; - sdtr_period_index = AscGetSynPeriodIndex(asc_dvc, sdtr_period); + if (sdtr_period_index <= asc_dvc->max_sdtr_index) { AscMemWordCopyPtrToLram(iop_base, ASCV_MSGOUT_BEG, (uchar *)&sdtr_buf, -- 2.9.0