From patchwork Mon Jul 2 20:01:58 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 10502319 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id E172760284 for ; Mon, 2 Jul 2018 20:02:14 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D021728B13 for ; Mon, 2 Jul 2018 20:02:14 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C1C2728B53; Mon, 2 Jul 2018 20:02:14 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AD33728B13 for ; Mon, 2 Jul 2018 20:02:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752630AbeGBUCN (ORCPT ); Mon, 2 Jul 2018 16:02:13 -0400 Received: from mail-by2nam01on0048.outbound.protection.outlook.com ([104.47.34.48]:24107 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752274AbeGBUCL (ORCPT ); Mon, 2 Jul 2018 16:02:11 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=sCSSPyLJFaDvXGY6x+5i8qf5Xq6MofsJcgFn4KSjtDY=; b=Y02hWOCIMftsJ+mKdeh+rWvE8saBMiODGN5L2bNPTjEjHFeSosgHUfwXW9O68W9o0ivNHprO6+GnVwwqWYqr+Avg5EI+xv2k4Zn4dotI7I7uvVWfbIy4fyW72+HZ1xaf6FKpYaRuMq9hjQXUU28tygSf0XsD9Reeecu8wO/QBC8= Received: from DM5PR07CA0092.namprd07.prod.outlook.com (2603:10b6:4:ae::21) by SN1PR07MB1469.namprd07.prod.outlook.com (2a01:111:e400:5838::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.906.24; Mon, 2 Jul 2018 20:02:08 +0000 Received: from BY2NAM05FT021.eop-nam05.prod.protection.outlook.com (2a01:111:f400:7e52::203) by DM5PR07CA0092.outlook.office365.com (2603:10b6:4:ae::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.906.20 via Frontend Transport; Mon, 2 Jul 2018 20:02:08 +0000 Authentication-Results: spf=pass (sender IP is 50.232.66.26) smtp.mailfrom=cavium.com; vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=bestguesspass action=none header.from=cavium.com; Received-SPF: Pass (protection.outlook.com: domain of cavium.com designates 50.232.66.26 as permitted sender) receiver=protection.outlook.com; client-ip=50.232.66.26; helo=CAEXCH02.caveonetworks.com; Received: from CAEXCH02.caveonetworks.com (50.232.66.26) by BY2NAM05FT021.mail.protection.outlook.com (10.152.100.158) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.20.930.2 via Frontend Transport; Mon, 2 Jul 2018 20:02:06 +0000 Received: from dut1171.mv.qlogic.com (172.29.51.171) by CAEXCH02.caveonetworks.com (10.17.4.29) with Microsoft SMTP Server id 14.2.347.0; Mon, 2 Jul 2018 13:02:01 -0700 Received: from dut1171.mv.qlogic.com (localhost [127.0.0.1]) by dut1171.mv.qlogic.com (8.14.7/8.14.7) with ESMTP id w62K20e2005227; Mon, 2 Jul 2018 13:02:00 -0700 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id w62K20ms005226; Mon, 2 Jul 2018 13:02:00 -0700 From: Himanshu Madhani To: , CC: , Subject: [PATCH 1/3] qla2xxx: Fix inconsistent DMA mem alloc/free Date: Mon, 2 Jul 2018 13:01:58 -0700 Message-ID: <20180702200200.5188-2-himanshu.madhani@cavium.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20180702200200.5188-1-himanshu.madhani@cavium.com> References: <20180702200200.5188-1-himanshu.madhani@cavium.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:50.232.66.26; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(39850400004)(136003)(376002)(346002)(396003)(2980300002)(438002)(189003)(199004)(44832011)(106466001)(356003)(81166006)(81156014)(305945005)(26005)(11346002)(186003)(1076002)(446003)(486006)(50226002)(14444005)(2616005)(476003)(5660300001)(86362001)(575784001)(80596001)(126002)(478600001)(4326008)(72206003)(47776003)(54906003)(106002)(69596002)(8676002)(76176011)(51416003)(336012)(87636003)(316002)(50466002)(2906002)(36756003)(8936002)(110136005)(48376002)(42186006)(16586007); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR07MB1469; H:CAEXCH02.caveonetworks.com; FPR:; SPF:Pass; LANG:en; PTR:50-232-66-26-static.hfc.comcastbusiness.net; MX:1; A:1; X-Microsoft-Exchange-Diagnostics: 1; BY2NAM05FT021; 1:a2oCawAznyZA4wy5aBtQTqbVH56bjqPk2ZUjBVZrq/x02YajIWhXwSR1dByvd5f1BusE6Ei2PQ+kIMJyRNyjOo/uTZgYtQ4R2rcNYkSZGJNn5//bBkG9GcxJ/AGDqotO X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 88f70b68-d7cd-45f4-9ac2-08d5e056b094 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600053)(711020)(4608076)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060); SRVR:SN1PR07MB1469; X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB1469; 3:COFLYXTs99xe8ZEQSYWxbm3/2yZ0duec9ifitq+hxkdXCkslWy8rAWwCKnm5Tsx1r7DXSfcTwH0lQyoehDFSF8LaX9VH0vBGaCe10l8n1vBRxgPlS8rXklunxiS5kSZUGRunUlEzDmsjGFettLTiwtUbcYQMamIuKdo2JfhI+n3wVwsjA+DEOZVyXF4E6E7JmLD8IBGqbdb9ZeReqUZYKbwlgerZ3swYzLajmXZRkqHO9c6wEtfps3DVrPzr86QOhK6hpN+ON+H0vjuWy5u5Mx9x876p4Ntunv18BY7+Au1HKltG8Pioea2u2Q8MeZQbUEoWSwQ6fWiTgv2c0uPtaGu8oUqF7HJxcLclCr6dGFk=; 25:/d1xJQcFGPOmLczPr5/LszyS1mHFQaXIZZ5Pd+VXvgoYIDbDn1Cj3nQsQav3loSkU2Cmq9eRC1saXBdJkKVJox/2X+0SBNrXYxana3nNhhgCoByVp33AoGfd6RRQ4rx7nDQTOuoytkyj6dAlvY0+WVMVb26b3bMsWTThqqFGLGCMTZf7HxoOPOdjmkMoflMIVa9FO3vdHiGo7/t2x7FiLAZCX2TmAwe/qL/jyYRClJZYkvZGPpqAMPUF+7e7bzRawAf83kX++zQj/OMU9rJx22VeXYeQddD/RU3ayDzgvGIMMB4HpNTjTu0i6K7cGQTV0KoiKlqkyJClm5u65s9f0g== X-MS-TrafficTypeDiagnostic: SN1PR07MB1469: X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB1469; 31:kiRC8u++bmvDMxePmUoytgIbAZ2k0kdREH/q30eIFgXJ8mu9B0W8tB92wAEMbuJOlgAXsdHNCbJdAahVEKG4vuQg2QuRCMgRUe3RKwMi/1W4KnZjOhmeCiXSoOXAPV2VofOkRYrETurSrFGzGoZClsbkkt5JS57RppSXA+X94ZoI9vbBOGiCsm0lpqUEvw3k7HejeBj3JdbhUGOGomSnVw9sXg51wBIy0dR5KSajfds=; 20:AoW3hBjDIILpqHjcTjjV4dXoL4TN2LeedTBO44+Bc9cfXdJ78SiL5d93rqA/oVYr5U93I+nXqhmZdOWxRexed5tXNSF8WTD4tpFn5bRJzeuAkaduGQthUzOH+cTbx8uLHue3Pu8sVCrZp4k7eTRgiDygvVX0mSRUv8v/3yXdsAtwtM6f2q3Z/yOd+uPS0HqBjNZhPasqTDsG4ZBGNZPdRlHBkWTHFm1Hg6M8DAx4E8coPrrQvk9cVf6+VjW5Gee92j80Zt1RZv+O0bJ5ZC3WouJrWDTX5q5NH+OfhRwpJUFsHYNihRdy0Rz4sdlSQE3Qf14pWncMNG3o1CnDEPZXe9W/O/io3p7SqD2DooLh6QJcDw0tTi7H4/qxD16VyWSpn1HNaPI92NQJwzHcWwT5erC+uY/E0hzSc/ps7qXORW748rLR5lsRWTqqySYPa5xRYvtiMeLkJTjV4JJtcuqnOySBLo9pV/QspPXAhOZM3oaWMsLw98Olh2R67HLMd0Z5 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(9452136761055); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(3231254)(944501410)(52105095)(10201501046)(93006095)(93004095)(149027)(150027)(6041310)(20161123564045)(20161123558120)(20161123562045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:SN1PR07MB1469; BCL:0; PCL:0; RULEID:; SRVR:SN1PR07MB1469; X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB1469; 4:Gplh1+7IiWfALY3KqqoGQZjOkllX+p7RUDl91IZdiP+MVTmLjpZt7XYQgjvbv5s4odnctpzgbqKhPqp4pK0fxxc0IMF+xGM0+MBFTbVIzUq2jcBJvy+HQneocr4pRRmSDgVc5zoEh2RivdC5ZKd1mFRXKMcJBhh4TREjWnMqMxRmJnVhRjjzz1PT91DuFu+jLsl2XQYIg1SScGYvy3+OtvzD03U+dvKxtAAPE/Fo5nLPxPwgPcXxvdA9NmJvTXLaT1oLj2q1GUJANf/5Bx0PRIeut5MWAIy+Ock4o9OfGOasng1D1GG03E3alWbq9Vuv X-Forefront-PRVS: 07215D0470 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN1PR07MB1469; 23:1YG9nQI1YdIEXGxwR7EQIEoc6if1JkEFn9898wN+7?= =?us-ascii?Q?+80lwXqdIR2MhPYdBEsSO2GjsOs6RYhXWypxZDaU9gvyOvEOnc/s2jxG3Uo+?= =?us-ascii?Q?ntA9gXkCY19cCieeOo/tlLHx+nlfRK49t7Y2Z9l+Sl/cbyXUnfumbWEarH6N?= =?us-ascii?Q?fHqVXkwoxrf7PrO0RoIHhndqfj6FHd6oKdpnoyqFMbW2PmbZU6RJx04VkpHI?= =?us-ascii?Q?UrkUPYmOK6Mu1A+8HofenAfw/ftUAIaWlmGG5WsR5ozq8SRKN15Uk7bEhev+?= =?us-ascii?Q?z9UzuYHgohOEzsc8gbqVL7BYQBa6vZQVRl6RwjUiRlscVLn7VisKmquHpTmo?= =?us-ascii?Q?DFEyI4OUTupEAIEuL3CqsyxmZkYg66jqttAmlqeTTEUimefFeX3F4MTHhy+Z?= =?us-ascii?Q?8FsKx+YndoxW5DVNrFwkwmyES2zNU7EUTRdHC2ikkSswUaXHYx22N3N5kc/s?= =?us-ascii?Q?SrobLkhHeuDifq4IKi7mpEu0mCZay7FXzGFP594dSSE09vw8qtljNOOCWg5i?= =?us-ascii?Q?iiC+PJiXjwGgdgFrIwJSCz5v1T0KGDeGrjJ8M/5I3QnVCHgF+8njVUsutSNg?= =?us-ascii?Q?t06vNw/4aaChKMeycf1Nt6p0EO35DANTAwuPnvLvRuFIb+TUkwgoEnwCnW3W?= =?us-ascii?Q?iHXWn3EPBOUEVt3/7jHKeAvb7sWNkiZ9xFDqcnqtBrkZKTN05p1dkVB+dDRL?= =?us-ascii?Q?hGKzbXVoGur8puEz5pgM5AzS+TqZ/ZiE1Im6MM0EflUv+Dg2hJXr/d5PM0CF?= =?us-ascii?Q?wavyyzPtYwrKTbwE4WVrh+NirAL2/MXHlXCMSDUB8FNbNbchWA7i1TX6TbYP?= =?us-ascii?Q?OsoY7uEC3u0LZPL6ggs0QatZudfj3LrCwRrtOJd44pN77Y6ilIgtq1qE5wTN?= =?us-ascii?Q?9FYjY457xU0xwc1DiZ9MNsd86bqW4/tKg+ZVnM1fvY/+UaoAEZes/CzJBBtJ?= =?us-ascii?Q?n6mF8kz8zWTvvS4ynshBmePNBaYsN9vG77TbrMVObd9KZpJ9E6kvn7WZR1Fj?= =?us-ascii?Q?zLPzHhpvJkwzrzCgDlHsn7U1TYlyGgbYdRCGcnxtLAbZ173ktH5ocEn3Uxv2?= =?us-ascii?Q?tUyBxV45378JDL1jX7wjUpgGSSupu+cbHIQzSZupZz5YUp8RHeZHMeOED5Se?= =?us-ascii?Q?jeSXzxobtaCAV9o93b0FdDZ2AvkzXVk?= X-Microsoft-Antispam-Message-Info: 4WbAE48SEHIlRzv5L8CvxnIG4kMt+8iK4SWNr/AHZGvoWJiztyW9hWpOCiaeLqNaG1+dxSY0DvVDT8JfjL0HxpkvFlaId/Wvsm0X9mvofD/BPYw6NG9FZPqzsps+qYAhLdTVh1ccWVPHxqgYx3b4jJY5mxC3rBfyPKB+ZQ3OucqoP9dAmpXN8H4dHPb68kH0gX7Itp/px8dJ55XNlM/Zvalf6Tou2fZqThxGAAU9OHdLAojSdZAp/ZOF6jgDLJQoAdaA6NGYF8Stj/y0w4/vId8pgT9O0hkow3/8hF45rawDavBdQot3OgvZPV8rFS3edaNgBa7mfQos3A1J20fk7sNpxD9njhrmIaGCsfRwpjk= X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB1469; 6:8Ru5NA4tR6B/IZhOBtbXuSgIzONvvUBKo9KU2nAzgGsPA4j0pHpWn4RQ9ZWxl/+BYL4wgf/vF44Xb7JTsVrfgPZhLQqPTxIaE0ep0iso+vm3OtxIU/AHBhzvzBBscED3uZdXbKuaykKcd9tacmXZV0OeiVyYZ0M5shW1OFZDRWxtihI2IYnbh2uU+L/kCEYAI2eecaObphPHKNsc2LnBWP08kv0E1BcfIhVuJJ4hblqhNSV+Vm69aM8HnwNZjUliQmzknRV8nOz1jVY2w61N2+w39u6peC71XsVHjLAlV27oZDVomG63AwXeRcAhuNkFJX48UGUC78e8jPtiQDCb8Dzqte3nwmXQ6v3JsluoGwgHOZ/V14lM9Urhi8iUKBNfIzbxGARrfp6Sun74468fbmzoKw9+rBeyA1Ej9tk9iHh7bxUd+tPHUl0Tv76bfZeFhPMWV+VIop1Px1cXQGtAzg==; 5:M6c4joUf6RSj6nPl1kBeKce0zdKZ2mdnEHVgmq0/50EnQGv5o8L39wRSCcB6eOuuFwZLfUd6Jh8d01XnAZVBLZZydJn0AwLAtt72yWztWUkGIrkp+n8/E2GAvCMY5Py6qTeXHWMidTGq4M15oeK+HXnomXTLxAMj4NO4BKUhbEA=; 24:quVKja+tDyMofQXsOccIYK1vS2EI3GXAnxdfZNgHFotXRfjjYvKRAVKwP0Z3qphJ0gBC9tlqOiSA994LqR/vQRRwT6z67b742Imo0pfrPjM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB1469; 7:uVCz2J0Ymqo3dy33XodDv6bncSvmtLBd4F7CjQANSGVwqfcpA8S3aScHe9cETKwjdBzCKXRhsH3lcQ0i7NqdaRVYsMrbR6qK6LshYch+w1YwfxzkCSxch/0zJXVHxQezDhD1pbXyTS1yEZjHODVVQeIRksOSldjU9P+GGVObcxQ9a8uXsU50DJl/JPojzq0VUNW9ialigoOa2JvOJI5/TVMh30A/wGTLZjgGCM1usH3Io2Ko9xExrutsgVMZFxLM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2018 20:02:06.6349 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 88f70b68-d7cd-45f4-9ac2-08d5e056b094 X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=711e4ccf-2e9b-4bcf-a551-4094005b6194; Ip=[50.232.66.26]; Helo=[CAEXCH02.caveonetworks.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR07MB1469 Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Quinn Tran GPNFT command allocates 2 buffer for switch query. On completion, the same buffers were freed using different size, instead of using original size at the time of allocation. This patch saves the size of the request and response buffers and uses that to free them. Following stack trace can be seen when using debug kernel dump_stack+0x19/0x1b __warn+0xd8/0x100 warn_slowpath_fmt+0x5f/0x80 check_unmap+0xfb/0xa20 debug_dma_free_coherent+0x110/0x160 qla24xx_sp_unmap+0x131/0x1e0 [qla2xxx] qla24xx_async_gnnft_done+0xb6/0x550 [qla2xxx] qla2x00_do_work+0x1ec/0x9f0 [qla2xxx] Cc: #4.17.0 Fixes: 33b28357dd00 ("scsi: qla2xxx: Fix Async GPN_FT for FCP and FC-NVMe scan") Reported-by: Ewan D. Milne Signed-off-by: Quinn Tran Signed-off-by: Himanshu Madhani Signed-off-by: Himanshu Madhani --- drivers/scsi/qla2xxx/qla_def.h | 2 ++ drivers/scsi/qla2xxx/qla_gs.c | 40 ++++++++++++++++++++++++++-------------- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index 9442e18aef6f..0f94b1d62d3f 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h @@ -361,6 +361,8 @@ struct ct_arg { dma_addr_t rsp_dma; u32 req_size; u32 rsp_size; + u32 req_allocated_size; + u32 rsp_allocated_size; void *req; void *rsp; port_id_t id; diff --git a/drivers/scsi/qla2xxx/qla_gs.c b/drivers/scsi/qla2xxx/qla_gs.c index 4bc2b66b299f..2c35b0b2baa0 100644 --- a/drivers/scsi/qla2xxx/qla_gs.c +++ b/drivers/scsi/qla2xxx/qla_gs.c @@ -556,7 +556,7 @@ static void qla2x00_async_sns_sp_done(void *s, int rc) /* please ignore kernel warning. otherwise, we have mem leak. */ if (sp->u.iocb_cmd.u.ctarg.req) { dma_free_coherent(&vha->hw->pdev->dev, - sizeof(struct ct_sns_pkt), + sp->u.iocb_cmd.u.ctarg.req_allocated_size, sp->u.iocb_cmd.u.ctarg.req, sp->u.iocb_cmd.u.ctarg.req_dma); sp->u.iocb_cmd.u.ctarg.req = NULL; @@ -564,7 +564,7 @@ static void qla2x00_async_sns_sp_done(void *s, int rc) if (sp->u.iocb_cmd.u.ctarg.rsp) { dma_free_coherent(&vha->hw->pdev->dev, - sizeof(struct ct_sns_pkt), + sp->u.iocb_cmd.u.ctarg.rsp_allocated_size, sp->u.iocb_cmd.u.ctarg.rsp, sp->u.iocb_cmd.u.ctarg.rsp_dma); sp->u.iocb_cmd.u.ctarg.rsp = NULL; @@ -617,6 +617,7 @@ static int qla_async_rftid(scsi_qla_host_t *vha, port_id_t *d_id) sp->u.iocb_cmd.u.ctarg.req = dma_alloc_coherent(&vha->hw->pdev->dev, sizeof(struct ct_sns_pkt), &sp->u.iocb_cmd.u.ctarg.req_dma, GFP_KERNEL); + sp->u.iocb_cmd.u.ctarg.req_allocated_size = sizeof(struct ct_sns_pkt); if (!sp->u.iocb_cmd.u.ctarg.req) { ql_log(ql_log_warn, vha, 0xd041, "%s: Failed to allocate ct_sns request.\n", @@ -627,6 +628,7 @@ static int qla_async_rftid(scsi_qla_host_t *vha, port_id_t *d_id) sp->u.iocb_cmd.u.ctarg.rsp = dma_alloc_coherent(&vha->hw->pdev->dev, sizeof(struct ct_sns_pkt), &sp->u.iocb_cmd.u.ctarg.rsp_dma, GFP_KERNEL); + sp->u.iocb_cmd.u.ctarg.rsp_allocated_size = sizeof(struct ct_sns_pkt); if (!sp->u.iocb_cmd.u.ctarg.rsp) { ql_log(ql_log_warn, vha, 0xd042, "%s: Failed to allocate ct_sns request.\n", @@ -712,6 +714,7 @@ static int qla_async_rffid(scsi_qla_host_t *vha, port_id_t *d_id, sp->u.iocb_cmd.u.ctarg.req = dma_alloc_coherent(&vha->hw->pdev->dev, sizeof(struct ct_sns_pkt), &sp->u.iocb_cmd.u.ctarg.req_dma, GFP_KERNEL); + sp->u.iocb_cmd.u.ctarg.req_allocated_size = sizeof(struct ct_sns_pkt); if (!sp->u.iocb_cmd.u.ctarg.req) { ql_log(ql_log_warn, vha, 0xd041, "%s: Failed to allocate ct_sns request.\n", @@ -722,6 +725,7 @@ static int qla_async_rffid(scsi_qla_host_t *vha, port_id_t *d_id, sp->u.iocb_cmd.u.ctarg.rsp = dma_alloc_coherent(&vha->hw->pdev->dev, sizeof(struct ct_sns_pkt), &sp->u.iocb_cmd.u.ctarg.rsp_dma, GFP_KERNEL); + sp->u.iocb_cmd.u.ctarg.rsp_allocated_size = sizeof(struct ct_sns_pkt); if (!sp->u.iocb_cmd.u.ctarg.rsp) { ql_log(ql_log_warn, vha, 0xd042, "%s: Failed to allocate ct_sns request.\n", @@ -802,6 +806,7 @@ static int qla_async_rnnid(scsi_qla_host_t *vha, port_id_t *d_id, sp->u.iocb_cmd.u.ctarg.req = dma_alloc_coherent(&vha->hw->pdev->dev, sizeof(struct ct_sns_pkt), &sp->u.iocb_cmd.u.ctarg.req_dma, GFP_KERNEL); + sp->u.iocb_cmd.u.ctarg.req_allocated_size = sizeof(struct ct_sns_pkt); if (!sp->u.iocb_cmd.u.ctarg.req) { ql_log(ql_log_warn, vha, 0xd041, "%s: Failed to allocate ct_sns request.\n", @@ -812,6 +817,7 @@ static int qla_async_rnnid(scsi_qla_host_t *vha, port_id_t *d_id, sp->u.iocb_cmd.u.ctarg.rsp = dma_alloc_coherent(&vha->hw->pdev->dev, sizeof(struct ct_sns_pkt), &sp->u.iocb_cmd.u.ctarg.rsp_dma, GFP_KERNEL); + sp->u.iocb_cmd.u.ctarg.rsp_allocated_size = sizeof(struct ct_sns_pkt); if (!sp->u.iocb_cmd.u.ctarg.rsp) { ql_log(ql_log_warn, vha, 0xd042, "%s: Failed to allocate ct_sns request.\n", @@ -909,6 +915,7 @@ static int qla_async_rsnn_nn(scsi_qla_host_t *vha) sp->u.iocb_cmd.u.ctarg.req = dma_alloc_coherent(&vha->hw->pdev->dev, sizeof(struct ct_sns_pkt), &sp->u.iocb_cmd.u.ctarg.req_dma, GFP_KERNEL); + sp->u.iocb_cmd.u.ctarg.req_allocated_size = sizeof(struct ct_sns_pkt); if (!sp->u.iocb_cmd.u.ctarg.req) { ql_log(ql_log_warn, vha, 0xd041, "%s: Failed to allocate ct_sns request.\n", @@ -919,6 +926,7 @@ static int qla_async_rsnn_nn(scsi_qla_host_t *vha) sp->u.iocb_cmd.u.ctarg.rsp = dma_alloc_coherent(&vha->hw->pdev->dev, sizeof(struct ct_sns_pkt), &sp->u.iocb_cmd.u.ctarg.rsp_dma, GFP_KERNEL); + sp->u.iocb_cmd.u.ctarg.rsp_allocated_size = sizeof(struct ct_sns_pkt); if (!sp->u.iocb_cmd.u.ctarg.rsp) { ql_log(ql_log_warn, vha, 0xd042, "%s: Failed to allocate ct_sns request.\n", @@ -3388,14 +3396,14 @@ void qla24xx_sp_unmap(scsi_qla_host_t *vha, srb_t *sp) { if (sp->u.iocb_cmd.u.ctarg.req) { dma_free_coherent(&vha->hw->pdev->dev, - sizeof(struct ct_sns_pkt), + sp->u.iocb_cmd.u.ctarg.req_allocated_size, sp->u.iocb_cmd.u.ctarg.req, sp->u.iocb_cmd.u.ctarg.req_dma); sp->u.iocb_cmd.u.ctarg.req = NULL; } if (sp->u.iocb_cmd.u.ctarg.rsp) { dma_free_coherent(&vha->hw->pdev->dev, - sizeof(struct ct_sns_pkt), + sp->u.iocb_cmd.u.ctarg.rsp_allocated_size, sp->u.iocb_cmd.u.ctarg.rsp, sp->u.iocb_cmd.u.ctarg.rsp_dma); sp->u.iocb_cmd.u.ctarg.rsp = NULL; @@ -3596,14 +3604,14 @@ static void qla2x00_async_gpnid_sp_done(void *s, int res) /* please ignore kernel warning. otherwise, we have mem leak. */ if (sp->u.iocb_cmd.u.ctarg.req) { dma_free_coherent(&vha->hw->pdev->dev, - sizeof(struct ct_sns_pkt), + sp->u.iocb_cmd.u.ctarg.req_allocated_size, sp->u.iocb_cmd.u.ctarg.req, sp->u.iocb_cmd.u.ctarg.req_dma); sp->u.iocb_cmd.u.ctarg.req = NULL; } if (sp->u.iocb_cmd.u.ctarg.rsp) { dma_free_coherent(&vha->hw->pdev->dev, - sizeof(struct ct_sns_pkt), + sp->u.iocb_cmd.u.ctarg.rsp_allocated_size, sp->u.iocb_cmd.u.ctarg.rsp, sp->u.iocb_cmd.u.ctarg.rsp_dma); sp->u.iocb_cmd.u.ctarg.rsp = NULL; @@ -3654,6 +3662,7 @@ int qla24xx_async_gpnid(scsi_qla_host_t *vha, port_id_t *id) sp->u.iocb_cmd.u.ctarg.req = dma_alloc_coherent(&vha->hw->pdev->dev, sizeof(struct ct_sns_pkt), &sp->u.iocb_cmd.u.ctarg.req_dma, GFP_KERNEL); + sp->u.iocb_cmd.u.ctarg.req_allocated_size = sizeof(struct ct_sns_pkt); if (!sp->u.iocb_cmd.u.ctarg.req) { ql_log(ql_log_warn, vha, 0xd041, "Failed to allocate ct_sns request.\n"); @@ -3663,6 +3672,7 @@ int qla24xx_async_gpnid(scsi_qla_host_t *vha, port_id_t *id) sp->u.iocb_cmd.u.ctarg.rsp = dma_alloc_coherent(&vha->hw->pdev->dev, sizeof(struct ct_sns_pkt), &sp->u.iocb_cmd.u.ctarg.rsp_dma, GFP_KERNEL); + sp->u.iocb_cmd.u.ctarg.rsp_allocated_size = sizeof(struct ct_sns_pkt); if (!sp->u.iocb_cmd.u.ctarg.rsp) { ql_log(ql_log_warn, vha, 0xd042, "Failed to allocate ct_sns request.\n"); @@ -4142,14 +4152,14 @@ static void qla2x00_async_gpnft_gnnft_sp_done(void *s, int res) */ if (sp->u.iocb_cmd.u.ctarg.req) { dma_free_coherent(&vha->hw->pdev->dev, - sizeof(struct ct_sns_pkt), + sp->u.iocb_cmd.u.ctarg.req_allocated_size, sp->u.iocb_cmd.u.ctarg.req, sp->u.iocb_cmd.u.ctarg.req_dma); sp->u.iocb_cmd.u.ctarg.req = NULL; } if (sp->u.iocb_cmd.u.ctarg.rsp) { dma_free_coherent(&vha->hw->pdev->dev, - sizeof(struct ct_sns_pkt), + sp->u.iocb_cmd.u.ctarg.rsp_allocated_size, sp->u.iocb_cmd.u.ctarg.rsp, sp->u.iocb_cmd.u.ctarg.rsp_dma); sp->u.iocb_cmd.u.ctarg.rsp = NULL; @@ -4179,14 +4189,14 @@ static void qla2x00_async_gpnft_gnnft_sp_done(void *s, int res) /* please ignore kernel warning. Otherwise, we have mem leak. */ if (sp->u.iocb_cmd.u.ctarg.req) { dma_free_coherent(&vha->hw->pdev->dev, - sizeof(struct ct_sns_pkt), + sp->u.iocb_cmd.u.ctarg.req_allocated_size, sp->u.iocb_cmd.u.ctarg.req, sp->u.iocb_cmd.u.ctarg.req_dma); sp->u.iocb_cmd.u.ctarg.req = NULL; } if (sp->u.iocb_cmd.u.ctarg.rsp) { dma_free_coherent(&vha->hw->pdev->dev, - sizeof(struct ct_sns_pkt), + sp->u.iocb_cmd.u.ctarg.rsp_allocated_size, sp->u.iocb_cmd.u.ctarg.rsp, sp->u.iocb_cmd.u.ctarg.rsp_dma); sp->u.iocb_cmd.u.ctarg.rsp = NULL; @@ -4281,14 +4291,14 @@ static int qla24xx_async_gnnft(scsi_qla_host_t *vha, struct srb *sp, done_free_sp: if (sp->u.iocb_cmd.u.ctarg.req) { dma_free_coherent(&vha->hw->pdev->dev, - sizeof(struct ct_sns_pkt), + sp->u.iocb_cmd.u.ctarg.req_allocated_size, sp->u.iocb_cmd.u.ctarg.req, sp->u.iocb_cmd.u.ctarg.req_dma); sp->u.iocb_cmd.u.ctarg.req = NULL; } if (sp->u.iocb_cmd.u.ctarg.rsp) { dma_free_coherent(&vha->hw->pdev->dev, - sizeof(struct ct_sns_pkt), + sp->u.iocb_cmd.u.ctarg.rsp_allocated_size, sp->u.iocb_cmd.u.ctarg.rsp, sp->u.iocb_cmd.u.ctarg.rsp_dma); sp->u.iocb_cmd.u.ctarg.rsp = NULL; @@ -4349,6 +4359,7 @@ int qla24xx_async_gpnft(scsi_qla_host_t *vha, u8 fc4_type, srb_t *sp) sp->u.iocb_cmd.u.ctarg.req = dma_zalloc_coherent( &vha->hw->pdev->dev, sizeof(struct ct_sns_pkt), &sp->u.iocb_cmd.u.ctarg.req_dma, GFP_KERNEL); + sp->u.iocb_cmd.u.ctarg.req_allocated_size = sizeof(struct ct_sns_pkt); if (!sp->u.iocb_cmd.u.ctarg.req) { ql_log(ql_log_warn, vha, 0xffff, "Failed to allocate ct_sns request.\n"); @@ -4366,6 +4377,7 @@ int qla24xx_async_gpnft(scsi_qla_host_t *vha, u8 fc4_type, srb_t *sp) sp->u.iocb_cmd.u.ctarg.rsp = dma_zalloc_coherent( &vha->hw->pdev->dev, rspsz, &sp->u.iocb_cmd.u.ctarg.rsp_dma, GFP_KERNEL); + sp->u.iocb_cmd.u.ctarg.rsp_allocated_size = sizeof(struct ct_sns_pkt); if (!sp->u.iocb_cmd.u.ctarg.rsp) { ql_log(ql_log_warn, vha, 0xffff, "Failed to allocate ct_sns request.\n"); @@ -4425,14 +4437,14 @@ int qla24xx_async_gpnft(scsi_qla_host_t *vha, u8 fc4_type, srb_t *sp) done_free_sp: if (sp->u.iocb_cmd.u.ctarg.req) { dma_free_coherent(&vha->hw->pdev->dev, - sizeof(struct ct_sns_pkt), + sp->u.iocb_cmd.u.ctarg.req_allocated_size, sp->u.iocb_cmd.u.ctarg.req, sp->u.iocb_cmd.u.ctarg.req_dma); sp->u.iocb_cmd.u.ctarg.req = NULL; } if (sp->u.iocb_cmd.u.ctarg.rsp) { dma_free_coherent(&vha->hw->pdev->dev, - sizeof(struct ct_sns_pkt), + sp->u.iocb_cmd.u.ctarg.rsp_allocated_size, sp->u.iocb_cmd.u.ctarg.rsp, sp->u.iocb_cmd.u.ctarg.rsp_dma); sp->u.iocb_cmd.u.ctarg.rsp = NULL;