From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FAKE_REPLY_C,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,MSGID_FROM_MTA_HEADER,SPF_HELO_NONE, SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 282B0C636CE for ; Wed, 21 Jul 2021 18:02:04 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id F3A9F610D2 for ; Wed, 21 Jul 2021 18:02:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237088AbhGURVY (ORCPT ); Wed, 21 Jul 2021 13:21:24 -0400 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]:48782 "EHLO mx0a-00069f02.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230444AbhGURVX (ORCPT ); Wed, 21 Jul 2021 13:21:23 -0400 Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 16LHqv0j018818; Wed, 21 Jul 2021 18:01:54 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : content-type : in-reply-to : mime-version; s=corp-2021-07-09; bh=gPOAbOoxXDgTw4+AyHNt6q4S7aYsFGlBstAYnI7DBXQ=; b=WN3KzIsyvqsmwWxF+WF3P7S5/tl3WovByw4UobBgTZhz/C9aCkDfJEWw1j9Sh/WDHAFm hiao+jFSj74izRVDLhTvBn6JkLa3Q+auQyM2EWybshSwS5Gu9XGuFDQV5CLAESHTsE/d JmQzX6oODjCC29TvaCk+GY6XtatJQ6SBWtK7uG/19lWVZIIEcVWk7Td6oiIGh/cxowM5 N1R7G9UFTooqkwDHdRz5zfZcqgdMmiikaPLR4PVrJM385tvue5jswr/4ZdkxkCdT3i6R hJM7PcHQxCaSNLVXK2u+OOuEf6zzcaf22+TeldOUZgSocqvf5tGxfFCYTxlKWLCiGOby 0A== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : content-type : in-reply-to : mime-version; s=corp-2020-01-29; bh=gPOAbOoxXDgTw4+AyHNt6q4S7aYsFGlBstAYnI7DBXQ=; b=OW076PJvTQoLFMhnaAFz7bcntgKKmHEldOl5QolXeFmTY8CHIGq+SGEWngcWxyLNHpac 7xo73JKZk6evU8lqbucr17r/gg9XWcdEDjPxeeiMzAHKd55gMha9bXidYBpuC4hGwt93 06kES8ziM6xxgqUyFCBcqkFdGcrftTIo/Alwmz98bIl/lNGBC5atthqSX+tfOjft3zfm /kXOHhnrTJB0WXNj47Tg9phdHiJfF1dbSAQhxNamY9fkB70VO+tP+mYDGhuwRD7xGTsN Z6uxMxps3gatPILWX4XN0CdX2gMjN1Yd81rS7QaTKDWp6w4kI58rszPFaZavNpzm+pnc PA== Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by mx0b-00069f02.pphosted.com with ESMTP id 39wyq0u718-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 21 Jul 2021 18:01:54 +0000 Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 16LI0RRP106793; Wed, 21 Jul 2021 18:01:53 GMT Received: from nam02-sn1-obe.outbound.protection.outlook.com (mail-sn1anam02lp2041.outbound.protection.outlook.com [104.47.57.41]) by userp3020.oracle.com with ESMTP id 39v8yxwgsn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 21 Jul 2021 18:01:52 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HXfVsqwL1yLUwci2CWQ5wOrNVrSsN4g5SwKX/yiEE9URx3EoA19ENoDMXE9Hv9zzUbsi3Fx3mHemPosUM/J5oTGYT2MR+v0kY87K7qsCKvcUiHN3siKCYG7gPCdCc+cv+DePMKgXqNJVfPvMc/mhaZtLDX6USTa3Kxmc7exNt8lckX9fezbcrdWMHE3ECTSB6VaupWMLQiP1xs0N8s4Y47K2EN+93KnMuy8VEliIMpD+8JvodZOIjP785N8O9f3U603g2Ebk8BrAOZIkguIS06b16HyDH6sZfgusTDOJCShv4pUf7d34do1zpc18tBojZMHchuaWhQmO2auRNZsfRA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gPOAbOoxXDgTw4+AyHNt6q4S7aYsFGlBstAYnI7DBXQ=; b=C/tBJwoj9rO30QWyIh3cpUZqdXCQU94GR9r81GDJ7BKxUT7zal9FA+wdY7Jcm4ifI3FlkQ5n+lrNarFgnJVflqkZtJjElNYhORYOoIFY7Ia48xodC2YZRg61xhvyWWPKxIlWeG4napVnjoLKnw1gHoIM4iMbN2tYjGOq8eDug0TojQZ792XHM2TPjekfzJ6p8xV5FDG2x7zthBzHLvPPTmEN4u4BrsFYknFTWiNhTscRlfo8+WS09wrg0wCDhTUeTHKUs7x9U+V9Rd7d1ThOVfseUy65Rq/7AxzW4i44bKxn9+WktnRqKTIpbAZt4XDZJ2UaiQTx+dhYStMdGMjyqQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gPOAbOoxXDgTw4+AyHNt6q4S7aYsFGlBstAYnI7DBXQ=; b=QxwmQn2jTsUcZScaDK6JbqXTJcry+oq1+ZE5kzt6O98uUDGZfsMUfaHiEg7PBOpZfd8nI4HoVXVgWNGha7ZVLDo4YCJQG7qjYwSAB8Qb7ShK1fKU31pdR62KcxfYn+ifL6dzmElm9MRuVCgb205gnM09UchMey1ZTIZ536vgwQM= Authentication-Results: lists.01.org; dkim=none (message not signed) header.d=none;lists.01.org; dmarc=none action=none header.from=oracle.com; Received: from MWHPR1001MB2365.namprd10.prod.outlook.com (2603:10b6:301:2d::28) by MWHPR10MB1774.namprd10.prod.outlook.com (2603:10b6:301:9::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4331.24; Wed, 21 Jul 2021 18:01:50 +0000 Received: from MWHPR1001MB2365.namprd10.prod.outlook.com ([fe80::5820:e42b:73d7:4268]) by MWHPR1001MB2365.namprd10.prod.outlook.com ([fe80::5820:e42b:73d7:4268%7]) with mapi id 15.20.4331.034; Wed, 21 Jul 2021 18:01:50 +0000 Date: Wed, 21 Jul 2021 21:01:36 +0300 From: Dan Carpenter To: kbuild@lists.01.org, Damien Le Moal , linux-block@vger.kernel.org, Jens Axboe , linux-scsi@vger.kernel.org, "Martin K . Petersen" , linux-ide@vger.kernel.org Cc: lkp@intel.com, kbuild-all@lists.01.org Subject: Re: [PATCH 2/4] scsi: sd: add concurrent positioning ranges support Message-ID: <202107220019.vhjyS5ei-lkp@intel.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210721104205.885115-3-damien.lemoal@wdc.com> User-Agent: Mutt/1.9.4 (2018-02-28) X-ClientProxiedBy: AM5PR0301CA0021.eurprd03.prod.outlook.com (2603:10a6:206:14::34) To MWHPR1001MB2365.namprd10.prod.outlook.com (2603:10b6:301:2d::28) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from kadam (102.222.70.252) by AM5PR0301CA0021.eurprd03.prod.outlook.com (2603:10a6:206:14::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4331.21 via Frontend Transport; Wed, 21 Jul 2021 18:01:46 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6938948e-2bb6-4182-30ec-08d94c719d3f X-MS-TrafficTypeDiagnostic: MWHPR10MB1774: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4125; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: a8OtlROY0xo3aavDMR2eCMvt7uoJZTZqCfBVr3P1WvUuTKbnqy6J357Op22I5mgQsphDCIILT5Q0L3kmcoI64UqnzOTTmC2BbOw7JKSTdunPb1kqbuIt1k1nBvtOuig62oxMHuxx5lDtqICQ3RuYx+jMoa9cYeX8i6llTSxSa2gADmUehapy+ynJ5tMknKsQb+dtI++mCTS4xJuXJ1tReW4cWKCl2zSul1xuAt5U/VsR5ZPOgqULAMl66Y0ck1Hmqadoa5CAjXyVVvqE3Jz34I77z7HYjUYZTdSqG7YoC2tdeXRfkPzai2ZxUK6XpVoVvS7GB+xVa1ujc+nc+Wz7rlvxCDEDDooITwvK45rLK4Ii3u3LWvRXcZR6TDgV9GVeKL2jKa9bmJ3znSNUSksTEkeWEERHkevb+O1otUViXu1SjFzuWXj3n4qNPHm44xDSz8HPEe/jqita6KiVholtcjcW7ihjBxDPvCdAxF3eUB1pXoKNUm8a8/ZbakEQy+gFYUSY48Uigz2DtUWt9UGupm01HTits+ehtgwb5nNeP36xgrsD3vELwgNgeyDMTY158TEjGF2bepNmlPFnoabvcOXMkUqmUhr1Klhi7txJh3rydhmZj+D1LnzXIp3e0uKYraOCrG66eu8FVlacdMpTizqonYjGRf4CeWzqAB3noc/+JBjeQ5LB2gMgYd5rx6Q7WJq/kmVKNuTTGud0ZGINVJHYiGnVExyXZ3pFgdO0RzOIaSzP31XU5ELozmlb2oKxBgG60BJxDKcvaLv9f+giQa7/lXPrBHCOBomuuAVk0EKx12Ma0SfI8SemyLhlrSMs X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:fr;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR1001MB2365.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(376002)(346002)(39860400002)(136003)(396003)(366004)(2906002)(956004)(8936002)(6496006)(44832011)(8676002)(86362001)(6486002)(110136005)(316002)(36756003)(4326008)(38350700002)(38100700002)(186003)(478600001)(66476007)(26005)(66556008)(66946007)(6666004)(52116002)(9686003)(5660300002)(83380400001)(966005)(1076003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?7XUkXww3GM8iTxfvwRdhh2QRWp0tkkr9pb7f3InZ6+NAVraq1Tjz2lBD6X8E?= =?us-ascii?Q?Y4SqqWxjrmkAVby+AbTvLNL+PqDdDWwZFDKIitGbv+bbTYlsjfafd/Av7KxR?= =?us-ascii?Q?GLR1lDCvqOK50/5tG9Cl0Pi0tRW2/TdLDrHBt9esejUExKrq1QKxUmSXAsjD?= =?us-ascii?Q?WaQoKD7/fpazVrcdSJiz0q//w7SHH9r16flOx+2XBwo1JQu2/IT19DjQ0KXR?= =?us-ascii?Q?Oen03xnaM7I3MWr3KsY00F/NSJMVE+eemRSUnoOGn4B2lfQVhngnanN4l8KC?= =?us-ascii?Q?xRvXNTKOwzMtz+re+xMzOzKUg70kUvZKGQ66e5QzBQW0gjJ1jYthncntuPGG?= =?us-ascii?Q?coKaWGb8GlBSgbb8Q2JPoEsXNsYFaaKY/HxP+wnY9/UAf4XS0X8EIRtpQlVR?= =?us-ascii?Q?vkoi0N/yqQIIT9fIlIqGORo89DRAK8OvWGviClkOFiKAmHmU2sxLoLwfSwbX?= =?us-ascii?Q?fSgs64Xne4gjuenFFVDziZzj0Kzc9C9Uh5Bhf7iicxHZkd8b8zurSdJj/yn7?= =?us-ascii?Q?YurUOKbEO3YbNUsCflTBgmBU+x208jFqny3EVCji9LyVEGbBqJliJH5fR7pQ?= =?us-ascii?Q?7t0s7wAxJb4RfWFPw9m16mizBiufnYx6FCSwkfcr4Xu/T02wIAS7lKCc4pNL?= =?us-ascii?Q?28ahJx8GOs41YlU6SjnSq+M/NXOoZd+M163sOcf0jKw0jSOUc8JQfN3MnwLo?= =?us-ascii?Q?xbwJpb8FYwHOtOlxHNKZZGuGmqaWRCcKmtQO1InfbQuzgb3Syu0Ar0xf+5CO?= =?us-ascii?Q?i4T/8DD6mP38v5sK7xgMKVWcXK3FCLKvgOS9DwBUBxX1mf52hLAdHOqvDWml?= =?us-ascii?Q?zYnStudXj9lD0t9dcdG/gSy7oglxRDBxiIKx5cajhe2muUlwzRbUW9nqMH0C?= =?us-ascii?Q?S+WYbiGKfukuunSgKh3hMwSs9CbPyf+WQExpaFRfXjN8YCQvQDglLrnM5Xxe?= =?us-ascii?Q?wgrqr1Z5P+NaCoxDMS9T0FW8p0+4vOyakvFi8KLO4AgFL2703Avh0jhHP6je?= =?us-ascii?Q?igJNar9geAnsY/O/fZitXbYvWrN6Ha4PTMZJXFNpNEizK8RsPdcEu1K/eHbW?= =?us-ascii?Q?5ipnb5MGfJ14PYQG3pq1VaHlh5FzPRb9RxNENDp7hUTkQWxlKA3uaCcvxeV6?= =?us-ascii?Q?zswryMgxWdrUZvGMhcUvmT9enkFPKxgvN+vd2TFcXMJkRRiUi/EEzBAtL8JG?= =?us-ascii?Q?0mVsbE5LjubbaaP9oD6qxmcYn+9pTgt+dSVl422LxNf4cf4n0n6aHmQucE7j?= =?us-ascii?Q?tlrwYJK87wnuyozmwRHcwv8CPWb25WBwpYgBFMcQt6cLkA1T3xmG9+EpI8cK?= =?us-ascii?Q?jKAQqScg+PuXbsaMR7e72zOT?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6938948e-2bb6-4182-30ec-08d94c719d3f X-MS-Exchange-CrossTenant-AuthSource: MWHPR1001MB2365.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jul 2021 18:01:50.7023 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /0kQzKvo1eE3iuDvTBj5CJ/Pa6vZIse3ROpcAGif/sMjhsqtiAVshPYiNf7gIY57OfTxLwRJNz3loe1pg9s3UjsO8hUN0Zip2hXSNP/d/NM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR10MB1774 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=10052 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxscore=0 malwarescore=0 adultscore=0 phishscore=0 suspectscore=0 mlxlogscore=999 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2107210106 X-Proofpoint-GUID: zZqxny_-1WKWoJmrUOHO6eD32Gs9PZr2 X-Proofpoint-ORIG-GUID: zZqxny_-1WKWoJmrUOHO6eD32Gs9PZr2 Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org Hi Damien, url: https://github.com/0day-ci/linux/commits/Damien-Le-Moal/Initial-support-for-multi-actuator-HDDs/20210721-185447 base: https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git for-next config: x86_64-randconfig-m001-20210720 (attached as .config) compiler: gcc-10 (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: drivers/scsi/sd.c:3204 sd_read_cpr() error: uninitialized symbol 'buffer'. vim +/buffer +3204 drivers/scsi/sd.c 331fc9cf44c011 Damien Le Moal 2021-07-21 3137 static void sd_read_cpr(struct scsi_disk *sdkp) 331fc9cf44c011 Damien Le Moal 2021-07-21 3138 { 331fc9cf44c011 Damien Le Moal 2021-07-21 3139 unsigned char *buffer, *desc; ^^^^^^ 331fc9cf44c011 Damien Le Moal 2021-07-21 3140 struct blk_cranges *cr = NULL; 331fc9cf44c011 Damien Le Moal 2021-07-21 3141 unsigned int nr_cpr = 0; 331fc9cf44c011 Damien Le Moal 2021-07-21 3142 int i, vpd_len, buf_len = SD_BUF_SIZE; 331fc9cf44c011 Damien Le Moal 2021-07-21 3143 331fc9cf44c011 Damien Le Moal 2021-07-21 3144 /* 331fc9cf44c011 Damien Le Moal 2021-07-21 3145 * We need to have the capacity set first for the block layer to be 331fc9cf44c011 Damien Le Moal 2021-07-21 3146 * able to check the ranges. 331fc9cf44c011 Damien Le Moal 2021-07-21 3147 */ 331fc9cf44c011 Damien Le Moal 2021-07-21 3148 if (sdkp->first_scan) 331fc9cf44c011 Damien Le Moal 2021-07-21 3149 return; 331fc9cf44c011 Damien Le Moal 2021-07-21 3150 331fc9cf44c011 Damien Le Moal 2021-07-21 3151 if (!sdkp->capacity) 331fc9cf44c011 Damien Le Moal 2021-07-21 3152 goto out; ^^^^^^^^^ This should just return probably? 331fc9cf44c011 Damien Le Moal 2021-07-21 3153 331fc9cf44c011 Damien Le Moal 2021-07-21 3154 /* 331fc9cf44c011 Damien Le Moal 2021-07-21 3155 * Concurrent Positioning Ranges VPD: there can be at most 256 ranges, 331fc9cf44c011 Damien Le Moal 2021-07-21 3156 * leading to a maximum page size of 64 + 256*32 bytes. 331fc9cf44c011 Damien Le Moal 2021-07-21 3157 */ 331fc9cf44c011 Damien Le Moal 2021-07-21 3158 buf_len = 64 + 256*32; 331fc9cf44c011 Damien Le Moal 2021-07-21 3159 buffer = kmalloc(buf_len, GFP_KERNEL); 331fc9cf44c011 Damien Le Moal 2021-07-21 3160 if (!buffer || scsi_get_vpd_page(sdkp->device, 0xb9, buffer, buf_len)) 331fc9cf44c011 Damien Le Moal 2021-07-21 3161 goto out; 331fc9cf44c011 Damien Le Moal 2021-07-21 3162 331fc9cf44c011 Damien Le Moal 2021-07-21 3163 /* We must have at least a 64B header and one 32B range descriptor */ 331fc9cf44c011 Damien Le Moal 2021-07-21 3164 vpd_len = get_unaligned_be16(&buffer[2]) + 3; 331fc9cf44c011 Damien Le Moal 2021-07-21 3165 if (vpd_len > buf_len || vpd_len < 64 + 32 || (vpd_len & 31)) { 331fc9cf44c011 Damien Le Moal 2021-07-21 3166 sd_printk(KERN_ERR, sdkp, 331fc9cf44c011 Damien Le Moal 2021-07-21 3167 "Invalid Concurrent Positioning Ranges VPD page\n"); 331fc9cf44c011 Damien Le Moal 2021-07-21 3168 goto out; 331fc9cf44c011 Damien Le Moal 2021-07-21 3169 } 331fc9cf44c011 Damien Le Moal 2021-07-21 3170 331fc9cf44c011 Damien Le Moal 2021-07-21 3171 nr_cpr = (vpd_len - 64) / 32; 331fc9cf44c011 Damien Le Moal 2021-07-21 3172 if (nr_cpr == 1) { 331fc9cf44c011 Damien Le Moal 2021-07-21 3173 nr_cpr = 0; 331fc9cf44c011 Damien Le Moal 2021-07-21 3174 goto out; 331fc9cf44c011 Damien Le Moal 2021-07-21 3175 } 331fc9cf44c011 Damien Le Moal 2021-07-21 3176 331fc9cf44c011 Damien Le Moal 2021-07-21 3177 cr = blk_alloc_cranges(sdkp->disk, nr_cpr); 331fc9cf44c011 Damien Le Moal 2021-07-21 3178 if (!cr) { 331fc9cf44c011 Damien Le Moal 2021-07-21 3179 nr_cpr = 0; 331fc9cf44c011 Damien Le Moal 2021-07-21 3180 goto out; 331fc9cf44c011 Damien Le Moal 2021-07-21 3181 } 331fc9cf44c011 Damien Le Moal 2021-07-21 3182 331fc9cf44c011 Damien Le Moal 2021-07-21 3183 desc = &buffer[64]; 331fc9cf44c011 Damien Le Moal 2021-07-21 3184 for (i = 0; i < nr_cpr; i++, desc += 32) { 331fc9cf44c011 Damien Le Moal 2021-07-21 3185 if (desc[0] != i) { 331fc9cf44c011 Damien Le Moal 2021-07-21 3186 sd_printk(KERN_ERR, sdkp, 331fc9cf44c011 Damien Le Moal 2021-07-21 3187 "Invalid Concurrent Positioning Range number\n"); 331fc9cf44c011 Damien Le Moal 2021-07-21 3188 nr_cpr = 0; 331fc9cf44c011 Damien Le Moal 2021-07-21 3189 break; 331fc9cf44c011 Damien Le Moal 2021-07-21 3190 } 331fc9cf44c011 Damien Le Moal 2021-07-21 3191 331fc9cf44c011 Damien Le Moal 2021-07-21 3192 cr->ranges[i].sector = sd64_to_sectors(sdkp, desc + 8); 331fc9cf44c011 Damien Le Moal 2021-07-21 3193 cr->ranges[i].nr_sectors = sd64_to_sectors(sdkp, desc + 16); 331fc9cf44c011 Damien Le Moal 2021-07-21 3194 } 331fc9cf44c011 Damien Le Moal 2021-07-21 3195 331fc9cf44c011 Damien Le Moal 2021-07-21 3196 out: 331fc9cf44c011 Damien Le Moal 2021-07-21 3197 blk_queue_set_cranges(sdkp->disk, cr); 331fc9cf44c011 Damien Le Moal 2021-07-21 3198 if (nr_cpr && sdkp->nr_actuators != nr_cpr) { 331fc9cf44c011 Damien Le Moal 2021-07-21 3199 sd_printk(KERN_NOTICE, sdkp, 331fc9cf44c011 Damien Le Moal 2021-07-21 3200 "%u concurrent positioning ranges\n", nr_cpr); 331fc9cf44c011 Damien Le Moal 2021-07-21 3201 sdkp->nr_actuators = nr_cpr; 331fc9cf44c011 Damien Le Moal 2021-07-21 3202 } 331fc9cf44c011 Damien Le Moal 2021-07-21 3203 331fc9cf44c011 Damien Le Moal 2021-07-21 @3204 kfree(buffer); ^^^^^^^^^^^^^ 331fc9cf44c011 Damien Le Moal 2021-07-21 3205 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============5554600787796210463==" MIME-Version: 1.0 From: kernel test robot Subject: Re: [PATCH 2/4] scsi: sd: add concurrent positioning ranges support Date: Thu, 22 Jul 2021 00:44:30 +0800 Message-ID: <202107220019.vhjyS5ei-lkp@intel.com> List-Id: To: kbuild@lists.01.org --===============5554600787796210463== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable CC: kbuild-all(a)lists.01.org In-Reply-To: <20210721104205.885115-3-damien.lemoal@wdc.com> References: <20210721104205.885115-3-damien.lemoal@wdc.com> TO: Damien Le Moal TO: linux-block(a)vger.kernel.org TO: Jens Axboe TO: linux-scsi(a)vger.kernel.org TO: "Martin K . Petersen" TO: linux-ide(a)vger.kernel.org Hi Damien, I love your patch! Perhaps something to improve: [auto build test WARNING on block/for-next] [also build test WARNING on scsi/for-next mkp-scsi/for-next v5.14-rc2 next-= 20210721] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Damien-Le-Moal/Initial-sup= port-for-multi-actuator-HDDs/20210721-185447 base: https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.g= it for-next :::::: branch date: 6 hours ago :::::: commit date: 6 hours ago config: x86_64-randconfig-m001-20210720 (attached as .config) compiler: gcc-10 (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: drivers/scsi/sd.c:3204 sd_read_cpr() error: uninitialized symbol 'buffer'. vim +/buffer +3204 drivers/scsi/sd.c 331fc9cf44c011 Damien Le Moal 2021-07-21 3132 = 331fc9cf44c011 Damien Le Moal 2021-07-21 3133 /** 331fc9cf44c011 Damien Le Moal 2021-07-21 3134 * sd_read_cpr - Query conc= urrent positioning ranges 331fc9cf44c011 Damien Le Moal 2021-07-21 3135 * @sdkp: disk to query 331fc9cf44c011 Damien Le Moal 2021-07-21 3136 */ 331fc9cf44c011 Damien Le Moal 2021-07-21 3137 static void sd_read_cpr(str= uct scsi_disk *sdkp) 331fc9cf44c011 Damien Le Moal 2021-07-21 3138 { 331fc9cf44c011 Damien Le Moal 2021-07-21 3139 unsigned char *buffer, *de= sc; 331fc9cf44c011 Damien Le Moal 2021-07-21 3140 struct blk_cranges *cr =3D= NULL; 331fc9cf44c011 Damien Le Moal 2021-07-21 3141 unsigned int nr_cpr =3D 0; 331fc9cf44c011 Damien Le Moal 2021-07-21 3142 int i, vpd_len, buf_len = =3D SD_BUF_SIZE; 331fc9cf44c011 Damien Le Moal 2021-07-21 3143 = 331fc9cf44c011 Damien Le Moal 2021-07-21 3144 /* 331fc9cf44c011 Damien Le Moal 2021-07-21 3145 * We need to have the cap= acity set first for the block layer to be 331fc9cf44c011 Damien Le Moal 2021-07-21 3146 * able to check the range= s. 331fc9cf44c011 Damien Le Moal 2021-07-21 3147 */ 331fc9cf44c011 Damien Le Moal 2021-07-21 3148 if (sdkp->first_scan) 331fc9cf44c011 Damien Le Moal 2021-07-21 3149 return; 331fc9cf44c011 Damien Le Moal 2021-07-21 3150 = 331fc9cf44c011 Damien Le Moal 2021-07-21 3151 if (!sdkp->capacity) 331fc9cf44c011 Damien Le Moal 2021-07-21 3152 goto out; 331fc9cf44c011 Damien Le Moal 2021-07-21 3153 = 331fc9cf44c011 Damien Le Moal 2021-07-21 3154 /* 331fc9cf44c011 Damien Le Moal 2021-07-21 3155 * Concurrent Positioning = Ranges VPD: there can be at most 256 ranges, 331fc9cf44c011 Damien Le Moal 2021-07-21 3156 * leading to a maximum pa= ge size of 64 + 256*32 bytes. 331fc9cf44c011 Damien Le Moal 2021-07-21 3157 */ 331fc9cf44c011 Damien Le Moal 2021-07-21 3158 buf_len =3D 64 + 256*32; 331fc9cf44c011 Damien Le Moal 2021-07-21 3159 buffer =3D kmalloc(buf_len= , GFP_KERNEL); 331fc9cf44c011 Damien Le Moal 2021-07-21 3160 if (!buffer || scsi_get_vp= d_page(sdkp->device, 0xb9, buffer, buf_len)) 331fc9cf44c011 Damien Le Moal 2021-07-21 3161 goto out; 331fc9cf44c011 Damien Le Moal 2021-07-21 3162 = 331fc9cf44c011 Damien Le Moal 2021-07-21 3163 /* We must have at least a= 64B header and one 32B range descriptor */ 331fc9cf44c011 Damien Le Moal 2021-07-21 3164 vpd_len =3D get_unaligned_= be16(&buffer[2]) + 3; 331fc9cf44c011 Damien Le Moal 2021-07-21 3165 if (vpd_len > buf_len || v= pd_len < 64 + 32 || (vpd_len & 31)) { 331fc9cf44c011 Damien Le Moal 2021-07-21 3166 sd_printk(KERN_ERR, sdkp, 331fc9cf44c011 Damien Le Moal 2021-07-21 3167 "Invalid Concurrent Po= sitioning Ranges VPD page\n"); 331fc9cf44c011 Damien Le Moal 2021-07-21 3168 goto out; 331fc9cf44c011 Damien Le Moal 2021-07-21 3169 } 331fc9cf44c011 Damien Le Moal 2021-07-21 3170 = 331fc9cf44c011 Damien Le Moal 2021-07-21 3171 nr_cpr =3D (vpd_len - 64) = / 32; 331fc9cf44c011 Damien Le Moal 2021-07-21 3172 if (nr_cpr =3D=3D 1) { 331fc9cf44c011 Damien Le Moal 2021-07-21 3173 nr_cpr =3D 0; 331fc9cf44c011 Damien Le Moal 2021-07-21 3174 goto out; 331fc9cf44c011 Damien Le Moal 2021-07-21 3175 } 331fc9cf44c011 Damien Le Moal 2021-07-21 3176 = 331fc9cf44c011 Damien Le Moal 2021-07-21 3177 cr =3D blk_alloc_cranges(s= dkp->disk, nr_cpr); 331fc9cf44c011 Damien Le Moal 2021-07-21 3178 if (!cr) { 331fc9cf44c011 Damien Le Moal 2021-07-21 3179 nr_cpr =3D 0; 331fc9cf44c011 Damien Le Moal 2021-07-21 3180 goto out; 331fc9cf44c011 Damien Le Moal 2021-07-21 3181 } 331fc9cf44c011 Damien Le Moal 2021-07-21 3182 = 331fc9cf44c011 Damien Le Moal 2021-07-21 3183 desc =3D &buffer[64]; 331fc9cf44c011 Damien Le Moal 2021-07-21 3184 for (i =3D 0; i < nr_cpr; = i++, desc +=3D 32) { 331fc9cf44c011 Damien Le Moal 2021-07-21 3185 if (desc[0] !=3D i) { 331fc9cf44c011 Damien Le Moal 2021-07-21 3186 sd_printk(KERN_ERR, sdkp, 331fc9cf44c011 Damien Le Moal 2021-07-21 3187 "Invalid Concurrent Pos= itioning Range number\n"); 331fc9cf44c011 Damien Le Moal 2021-07-21 3188 nr_cpr =3D 0; 331fc9cf44c011 Damien Le Moal 2021-07-21 3189 break; 331fc9cf44c011 Damien Le Moal 2021-07-21 3190 } 331fc9cf44c011 Damien Le Moal 2021-07-21 3191 = 331fc9cf44c011 Damien Le Moal 2021-07-21 3192 cr->ranges[i].sector =3D = sd64_to_sectors(sdkp, desc + 8); 331fc9cf44c011 Damien Le Moal 2021-07-21 3193 cr->ranges[i].nr_sectors = =3D sd64_to_sectors(sdkp, desc + 16); 331fc9cf44c011 Damien Le Moal 2021-07-21 3194 } 331fc9cf44c011 Damien Le Moal 2021-07-21 3195 = 331fc9cf44c011 Damien Le Moal 2021-07-21 3196 out: 331fc9cf44c011 Damien Le Moal 2021-07-21 3197 blk_queue_set_cranges(sdkp= ->disk, cr); 331fc9cf44c011 Damien Le Moal 2021-07-21 3198 if (nr_cpr && sdkp->nr_act= uators !=3D nr_cpr) { 331fc9cf44c011 Damien Le Moal 2021-07-21 3199 sd_printk(KERN_NOTICE, sd= kp, 331fc9cf44c011 Damien Le Moal 2021-07-21 3200 "%u concurrent positio= ning ranges\n", nr_cpr); 331fc9cf44c011 Damien Le Moal 2021-07-21 3201 sdkp->nr_actuators =3D nr= _cpr; 331fc9cf44c011 Damien Le Moal 2021-07-21 3202 } 331fc9cf44c011 Damien Le Moal 2021-07-21 3203 = 331fc9cf44c011 Damien Le Moal 2021-07-21 @3204 kfree(buffer); 331fc9cf44c011 Damien Le Moal 2021-07-21 3205 } 331fc9cf44c011 Damien Le Moal 2021-07-21 3206 = --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============5554600787796210463== Content-Type: application/gzip MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" 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 --===============5554600787796210463==-- From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============0823793983220156814==" MIME-Version: 1.0 From: Dan Carpenter To: kbuild-all@lists.01.org Subject: Re: [PATCH 2/4] scsi: sd: add concurrent positioning ranges support Date: Wed, 21 Jul 2021 21:01:36 +0300 Message-ID: <202107220019.vhjyS5ei-lkp@intel.com> In-Reply-To: <20210721104205.885115-3-damien.lemoal@wdc.com> List-Id: --===============0823793983220156814== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Damien, url: https://github.com/0day-ci/linux/commits/Damien-Le-Moal/Initial-sup= port-for-multi-actuator-HDDs/20210721-185447 base: https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.g= it for-next config: x86_64-randconfig-m001-20210720 (attached as .config) compiler: gcc-10 (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: drivers/scsi/sd.c:3204 sd_read_cpr() error: uninitialized symbol 'buffer'. vim +/buffer +3204 drivers/scsi/sd.c 331fc9cf44c011 Damien Le Moal 2021-07-21 3137 static void sd_read_cpr(str= uct scsi_disk *sdkp) 331fc9cf44c011 Damien Le Moal 2021-07-21 3138 { 331fc9cf44c011 Damien Le Moal 2021-07-21 3139 unsigned char *buffer, *de= sc; ^^^^= ^^ 331fc9cf44c011 Damien Le Moal 2021-07-21 3140 struct blk_cranges *cr =3D= NULL; 331fc9cf44c011 Damien Le Moal 2021-07-21 3141 unsigned int nr_cpr =3D 0; 331fc9cf44c011 Damien Le Moal 2021-07-21 3142 int i, vpd_len, buf_len = =3D SD_BUF_SIZE; 331fc9cf44c011 Damien Le Moal 2021-07-21 3143 = 331fc9cf44c011 Damien Le Moal 2021-07-21 3144 /* 331fc9cf44c011 Damien Le Moal 2021-07-21 3145 * We need to have the cap= acity set first for the block layer to be 331fc9cf44c011 Damien Le Moal 2021-07-21 3146 * able to check the range= s. 331fc9cf44c011 Damien Le Moal 2021-07-21 3147 */ 331fc9cf44c011 Damien Le Moal 2021-07-21 3148 if (sdkp->first_scan) 331fc9cf44c011 Damien Le Moal 2021-07-21 3149 return; 331fc9cf44c011 Damien Le Moal 2021-07-21 3150 = 331fc9cf44c011 Damien Le Moal 2021-07-21 3151 if (!sdkp->capacity) 331fc9cf44c011 Damien Le Moal 2021-07-21 3152 goto out; ^^^^^^^^^ This should just return probably? 331fc9cf44c011 Damien Le Moal 2021-07-21 3153 = 331fc9cf44c011 Damien Le Moal 2021-07-21 3154 /* 331fc9cf44c011 Damien Le Moal 2021-07-21 3155 * Concurrent Positioning = Ranges VPD: there can be at most 256 ranges, 331fc9cf44c011 Damien Le Moal 2021-07-21 3156 * leading to a maximum pa= ge size of 64 + 256*32 bytes. 331fc9cf44c011 Damien Le Moal 2021-07-21 3157 */ 331fc9cf44c011 Damien Le Moal 2021-07-21 3158 buf_len =3D 64 + 256*32; 331fc9cf44c011 Damien Le Moal 2021-07-21 3159 buffer =3D kmalloc(buf_len= , GFP_KERNEL); 331fc9cf44c011 Damien Le Moal 2021-07-21 3160 if (!buffer || scsi_get_vp= d_page(sdkp->device, 0xb9, buffer, buf_len)) 331fc9cf44c011 Damien Le Moal 2021-07-21 3161 goto out; 331fc9cf44c011 Damien Le Moal 2021-07-21 3162 = 331fc9cf44c011 Damien Le Moal 2021-07-21 3163 /* We must have at least a= 64B header and one 32B range descriptor */ 331fc9cf44c011 Damien Le Moal 2021-07-21 3164 vpd_len =3D get_unaligned_= be16(&buffer[2]) + 3; 331fc9cf44c011 Damien Le Moal 2021-07-21 3165 if (vpd_len > buf_len || v= pd_len < 64 + 32 || (vpd_len & 31)) { 331fc9cf44c011 Damien Le Moal 2021-07-21 3166 sd_printk(KERN_ERR, sdkp, 331fc9cf44c011 Damien Le Moal 2021-07-21 3167 "Invalid Concurrent Po= sitioning Ranges VPD page\n"); 331fc9cf44c011 Damien Le Moal 2021-07-21 3168 goto out; 331fc9cf44c011 Damien Le Moal 2021-07-21 3169 } 331fc9cf44c011 Damien Le Moal 2021-07-21 3170 = 331fc9cf44c011 Damien Le Moal 2021-07-21 3171 nr_cpr =3D (vpd_len - 64) = / 32; 331fc9cf44c011 Damien Le Moal 2021-07-21 3172 if (nr_cpr =3D=3D 1) { 331fc9cf44c011 Damien Le Moal 2021-07-21 3173 nr_cpr =3D 0; 331fc9cf44c011 Damien Le Moal 2021-07-21 3174 goto out; 331fc9cf44c011 Damien Le Moal 2021-07-21 3175 } 331fc9cf44c011 Damien Le Moal 2021-07-21 3176 = 331fc9cf44c011 Damien Le Moal 2021-07-21 3177 cr =3D blk_alloc_cranges(s= dkp->disk, nr_cpr); 331fc9cf44c011 Damien Le Moal 2021-07-21 3178 if (!cr) { 331fc9cf44c011 Damien Le Moal 2021-07-21 3179 nr_cpr =3D 0; 331fc9cf44c011 Damien Le Moal 2021-07-21 3180 goto out; 331fc9cf44c011 Damien Le Moal 2021-07-21 3181 } 331fc9cf44c011 Damien Le Moal 2021-07-21 3182 = 331fc9cf44c011 Damien Le Moal 2021-07-21 3183 desc =3D &buffer[64]; 331fc9cf44c011 Damien Le Moal 2021-07-21 3184 for (i =3D 0; i < nr_cpr; = i++, desc +=3D 32) { 331fc9cf44c011 Damien Le Moal 2021-07-21 3185 if (desc[0] !=3D i) { 331fc9cf44c011 Damien Le Moal 2021-07-21 3186 sd_printk(KERN_ERR, sdkp, 331fc9cf44c011 Damien Le Moal 2021-07-21 3187 "Invalid Concurrent Pos= itioning Range number\n"); 331fc9cf44c011 Damien Le Moal 2021-07-21 3188 nr_cpr =3D 0; 331fc9cf44c011 Damien Le Moal 2021-07-21 3189 break; 331fc9cf44c011 Damien Le Moal 2021-07-21 3190 } 331fc9cf44c011 Damien Le Moal 2021-07-21 3191 = 331fc9cf44c011 Damien Le Moal 2021-07-21 3192 cr->ranges[i].sector =3D = sd64_to_sectors(sdkp, desc + 8); 331fc9cf44c011 Damien Le Moal 2021-07-21 3193 cr->ranges[i].nr_sectors = =3D sd64_to_sectors(sdkp, desc + 16); 331fc9cf44c011 Damien Le Moal 2021-07-21 3194 } 331fc9cf44c011 Damien Le Moal 2021-07-21 3195 = 331fc9cf44c011 Damien Le Moal 2021-07-21 3196 out: 331fc9cf44c011 Damien Le Moal 2021-07-21 3197 blk_queue_set_cranges(sdkp= ->disk, cr); 331fc9cf44c011 Damien Le Moal 2021-07-21 3198 if (nr_cpr && sdkp->nr_act= uators !=3D nr_cpr) { 331fc9cf44c011 Damien Le Moal 2021-07-21 3199 sd_printk(KERN_NOTICE, sd= kp, 331fc9cf44c011 Damien Le Moal 2021-07-21 3200 "%u concurrent positio= ning ranges\n", nr_cpr); 331fc9cf44c011 Damien Le Moal 2021-07-21 3201 sdkp->nr_actuators =3D nr= _cpr; 331fc9cf44c011 Damien Le Moal 2021-07-21 3202 } 331fc9cf44c011 Damien Le Moal 2021-07-21 3203 = 331fc9cf44c011 Damien Le Moal 2021-07-21 @3204 kfree(buffer); ^^^^^^^^^^^^^ 331fc9cf44c011 Damien Le Moal 2021-07-21 3205 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============0823793983220156814==--