From patchwork Fri Feb 10 12:07:18 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Horia Geanta X-Patchwork-Id: 9566635 X-Patchwork-Delegate: herbert@gondor.apana.org.au 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 AF167601EA for ; Fri, 10 Feb 2017 12:08:05 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9AC1A2855E for ; Fri, 10 Feb 2017 12:08:05 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8DFC428569; Fri, 10 Feb 2017 12:08:05 +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=-6.9 required=2.0 tests=BAYES_00,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 E749C2855E for ; Fri, 10 Feb 2017 12:08:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753355AbdBJMIC (ORCPT ); Fri, 10 Feb 2017 07:08:02 -0500 Received: from mail-sn1nam01on0057.outbound.protection.outlook.com ([104.47.32.57]:32433 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752339AbdBJMH7 (ORCPT ); Fri, 10 Feb 2017 07:07:59 -0500 Received: from BN6PR03CA0031.namprd03.prod.outlook.com (10.175.124.17) by DM5PR03MB2956.namprd03.prod.outlook.com (10.175.106.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.888.16; Fri, 10 Feb 2017 12:07:48 +0000 Received: from BL2FFO11OLC014.protection.gbl (2a01:111:f400:7c09::102) by BN6PR03CA0031.outlook.office365.com (2603:10b6:404:10c::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.888.16 via Frontend Transport; Fri, 10 Feb 2017 12:07:47 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=nxp.com; vger.kernel.org; dkim=none (message not signed) header.d=none; vger.kernel.org; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; Received: from az84smr01.freescale.net (192.88.158.2) by BL2FFO11OLC014.mail.protection.outlook.com (10.173.160.144) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.888.7 via Frontend Transport; Fri, 10 Feb 2017 12:07:47 +0000 Received: from enigma.ea.freescale.net (enigma.ea.freescale.net [10.171.77.120]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id v1AC7ZqS022809; Fri, 10 Feb 2017 05:07:45 -0700 From: =?UTF-8?q?Horia=20Geant=C4=83?= To: Herbert Xu CC: "David S. Miller" , Dan Douglass , Tudor Ambarus , "Cristian Stoica" , Subject: [PATCH 05/12] crypto: caam - check sg_count() return value Date: Fri, 10 Feb 2017 14:07:18 +0200 Message-ID: <1486728445-13047-6-git-send-email-horia.geanta@nxp.com> X-Mailer: git-send-email 2.4.4 In-Reply-To: <1486728445-13047-1-git-send-email-horia.geanta@nxp.com> References: <1486728445-13047-1-git-send-email-horia.geanta@nxp.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131312020674653075; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(7916002)(39400400002)(39410400002)(39840400002)(39380400002)(39860400002)(39850400002)(39450400003)(2980300002)(1110001)(1109001)(339900001)(189002)(199003)(33646002)(53936002)(86362001)(23676002)(4326007)(85426001)(6666003)(38730400002)(6916009)(104016004)(626004)(5660300001)(2950100002)(110136004)(68736007)(2906002)(189998001)(47776003)(76176999)(97736004)(50986999)(8656002)(5820100001)(92566002)(54906002)(77096006)(356003)(36756003)(305945005)(50466002)(81156014)(8936002)(81166006)(105606002)(50226002)(2870700001)(106466001)(8676002)(69596002); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR03MB2956; H:az84smr01.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11OLC014; 1:kHivLqa1GiyMiC6bPNLivMi75qem+K0UHEN+NYm+Wmfjz+ORgnRlJZaVelDzxrpo5pKUyoHDUovkqHB+3LC5EkK8rueq5weTSPNxCtMzO7Hy4+hhzr6n2TRwD6InZom8LHPoCncbkic8HyyyGY0r7n3cCksrICspnIzswOum2T5697XwaC77E3mvbhdDt933E1c0xE035xjK6wVSye6SrUhYGaw/W8231qhI+5stxW5DwAd1uL1HVJlFqpATiCblHYKmUZjzfNjAFQU+aOP8EqoMlKttbTsBsMKvERQ6A3zjM6+z26OVfGvRQ7+hk5okD23grUlRbGzVILsl6/FiTAKApzTROUu5ZOqQ5LDdLSd4GOFTnDlwH53fWRQtBKNndPlKeJQh6NBQnP2CsoLd0TxqPbO/PZSQJRfGV3gU09uHA9dVJIfkGix00vzDj4FnpGufPOB5xjP0bXEhUAwtxvJZVS0J8g+rXU07hGXYdJvUG123UdXCLEsqN1lFLt+kkGG96zwubTvLSnfd6XczlNn13WxoIF+R+Cq2+Z7PDIYoN+fnuMgvHbp+H9/+Gi8tdqAEAUOgrxMBg6tJn/Cfa3ETJm+doiAvP6JJ+1/4BMM= X-MS-Office365-Filtering-Correlation-Id: 6655f340-2a6b-4f6e-ca35-08d451ad6d81 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:DM5PR03MB2956; X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2956; 3:HjRtedizaAQRlCZwwhefvxc2XPswa4cK6Ugb8UaNCER48bDOo9Eg7NoZzNAbnrfcMF5cHmHAccsiEQoQl8Hrcefm2IDog68tauJAtDNWs2Z0yQfKeM5q3wEyTsfIUZnH6dpExP8h5o8yGDIkatvezkvgOWZnUtEpGO1Y7XzGFqzCCJyvc/FmoY3rhFfyBCYOlZvyd4T6OvKC+DP/nSdHMrKkpKxScH4x2o48pSVU9sngUI4HiLJqSiT6hxXA1iYNoAabOomi4tVZ6fR6cZHMX8zbfsj6FpgirNZ7nPYs1928EGdRe4wwbPLYIawqDE8AtUGmwBhO4Qrzsfn9iPyViUcV8nje3EwPEVmwUHSzo691WoY294b3Mf8WvWknHcfr; 25:BWC+InseIm7rVexhqXFCs3/4idqeepXRiJA5l0nVw/Dn/kWjqlLnlOjjbC4hvUny7nZYpYRjsEOc0pughFF5uw+YiRB1DTG+y1Y2XOc4Yy6ecHYBTTNq3HmAB2XUOFE1cyOoFUvhD/HnKSdKSJi/Z8HPKVWeNs6zMEzhVoxqTbqwDB11YVeMsw0lgiD31S6/g1cn7Qreq82ICM45oRmC/nFOg8nb6W7C57HrtOE1kU9BS2OQfnsC1RDaJZasDxAFfan94zvpSccrbcEa9oQYtDcNzOd5BcXxN7ghKEhD3Qj5sxD+KGxZKwOfXdW09G1IAE0nkkJWJ6ZC32Y2zxjy/vCYKzdyEvbE0bwynVvdibVQj/jmK/0S789K8Ea/OjE2DhL9l/Ug1dZL8EQCUaeq7BtUIcNaEhbiiz72dbGyfqi26HasKD1Wn3PxLTfExdOdpa324vAg2/lVlrcKXFMI/Q== X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2956; 31:HE2hTB3GKg54Ah+bKXWaYwhOz+Y+rG7pC5qABJZNidqoEjGoitvlXVdQh7U5vlAU2yAW3bXa8kFkCexCxae1a8foYyd9PBlWJQysjcp5J5Wbn/PubiJVl2ffxqbLibc8mnIdhHqu4x5pJFQPl8jaOqW0Cnu2G+NJGrGWDlmb/3BFSGCOENOcYu2N7YmQF9heYRYbejO+h8I6K72r1ieUSGR0EbmcR1y20MEnfDXPMx15OPkEZ/G6Hujm8CW0fJpapQ42bWctiJBaFgWMnLfWObmEDCjhrC+98Y2EWiAzSA8= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095060)(601004)(2401047)(13015025)(13017025)(5005006)(8121501046)(13023025)(13018025)(13024025)(3002001)(10201501046)(6055026)(6096035)(20161123563025)(20161123561025)(20161123565025)(20161123559025)(20161123556025); SRVR:DM5PR03MB2956; BCL:0; PCL:0; RULEID:(400006); SRVR:DM5PR03MB2956; X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2956; 4:VZuxm0TX8ai3F/UCkflEtRqaX6ovS2bK3mMYDpQyZ0Q/EUm0fNMPmngtI4il2IKizXqLC7KoIpFFBADdSGoL5+osArpVB+/dmqYdxaZjjufvrbKJAxd66oh50bPBHTNYuqj/A1ZAF29thG1ZWeUWV2wBN4KxHRHibFVs/8Vh3kYcT4jjVv/2I0BuNl44h6BX0C/enM/n/5x/dVDT2qmnGYmySciM+L345sYnEWH9x71b5J0OZ21GQs3R8IrVn52lNqZ93PTjnjDxaRk5NaNDk0aFlCv/8TdvSqC1LxU7wxp83uYj8WX06ta/svXI2upT9mL3g4oRFJwNbG0WN4Vn6+mhk+UczhjvjBNEDifr1vWWnX65J9+xo2oNSXS76Zx/dQxmGiZ1n2/+Dm6YzM0/FYWGmPiTFwTtUkg7R1QuxQxcc/f9PcwxOEMyW1FhoTxEDVghgj6k1lrW7+eiEIUFtRBygt2lcwqlpSwi5qkjqOutfPk0w5kNrNzBrDld0lTQI9+u83s7AP0Wsg+NurWcw85HKxGBNOXLlPxFTZi+ZZjlF+Ln6A6MlOQuiANPtkIgmTgUPp+vAb73RLaagzEhNu0y6zw8IRRlvui5EEDA4NiVx0uQUApClrkyjLSyF4h34qSa3l7tACcrgjv2J7eK8hQTEGWgX561bKQMf8DaRlUMgnAOu10FnE/f88cdrQzN4sMPFvbuniccgTeW7VVUnk55+xtzEwApbGt/DErMBRcYWlAdt/4ee/rk6qrdCiDC X-Forefront-PRVS: 0214EB3F68 X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTVQUjAzTUIyOTU2OzIzOnMvTk1ZUDdnWG1seUJwcXFmSDlyd3BSSk92?= =?utf-8?B?aGdSOW8wL25kRUxUVTU2VFR6blF4VHRvSzlkZ0VnTEp0ZVpJTng4dTN2K3gv?= =?utf-8?B?Y04vKy8yMnBVeVprU3FndUs0bDJVcEl5UWZxTnVEVnFOL09GQ2pKTlBHZ1NY?= =?utf-8?B?N2NWZmlyenc2dmRON2Z1bHFnQkE1cFpMaGxvd1ZadFljKzJqbENVdDVaSW9a?= =?utf-8?B?ZVhONmhTWE5FNXJMbWZ0MkNSQ1FEYkxLaWJnWnBkTnpHaUwxZGNyTXAzNVhY?= =?utf-8?B?eUNUTnNUNzVCUmZoN1lkbUFRM2NNZ1VoNnNhZllFYXZTMU03YWw5N3FLaWVT?= =?utf-8?B?MGZ3ZFZ4cDZaZlM1R1gzVHU5eEhjMExyL294TTZKczAxTUlQVU5YcTVLQTho?= =?utf-8?B?N1ZsQ2c1U1lYNGp4V2NBU2d5Qm1CN2x1ajQ3WnR2S0FueWFzM2ZpSCt3bUpR?= =?utf-8?B?WnlUWmlGRjRkUzhtd3B1UE5qZjZOejE0dWNCcGRVWE5LODdaYWhiVGhkbktY?= =?utf-8?B?Skl4N0Q1Nmtxd0pVRyttWUZoSmZKYVRDdjY2czhpOHZKcTI1V09iRDA0bXFF?= =?utf-8?B?ZldpMExJSUl5RHd4UjhrYVR6T2dmSWEzeXA5WkhIekNoRkNnSjVuUDVsM2Y4?= =?utf-8?B?L2RndGw2NHMrMkEvdk15UGswc2RwUlN4YkpzMmREbzgrTysrdzZ2SzVybWhM?= =?utf-8?B?SjNjUHhEQzRlSmtGZmpIbjg4bzF3MzIvR0c3TjNlbUw2ZlVUVWo0VENpY1Iv?= =?utf-8?B?QnVBa0RsUWdoM05NMGZpWkVMN0ZHZG54WHJXaDJNcXdNS2NYdWVtYmJOT1g5?= =?utf-8?B?U1AxM3ZSeHlEaUZlVXlyRTU5RVByNVhtQ3ZjMHkxTlJPY0pBTE1vUm44Rytq?= =?utf-8?B?ZkJZZDhqdXpwWHUvNmVsSkhyZ2RMei9WVEczSENPVEJWZCt6dmc2LzVmRXlM?= =?utf-8?B?VnVsVEN3Y1RYcnZGRkZ5K0ZzeXVZL2pZMi80UjlzS3pCSUFaVDdBMnM0N0lO?= =?utf-8?B?eXZaMTJVM3VQZzdEMys0eUFlWVZYTmN6VE96emNFbExTalFyVmMwTjN5S0Zk?= =?utf-8?B?ZUszTzFLYzFsOEYwQUROWUVqajM3K0FJS2IzNWNIaVY1ZllKWkMzRXVFeThx?= =?utf-8?B?UldwUXZDWVE0d0RRbSszd1o5TS8zWjZHNzhQRXRuaE82SW9TNHFORmlsY1Qy?= =?utf-8?B?YnpoSlV3SDBSUTh5SDZDdkx1RS9Tb2E2aCsrS0NXY1RiMDVoYy80czdFNWR3?= =?utf-8?B?OUVKTjBaSTJYR1RWTGw0ZG1NTWdQQ0h2TWJFR01nbU5sL3lYYTVjYlNSd2lv?= =?utf-8?B?UjJvSU96QjRrcE9kanZyc1luMXlOb3gxL0dXZUZsVlYyMllzM0FNV0ZVMjlw?= =?utf-8?B?elZQNlNBdHphcTFmUzc4amFTUVZCRUUwR3R2UXZwNmU4WDBOcHZ0OTd0VlNp?= =?utf-8?B?YzlIaDZQMmxqNlBsMTB1YW90SEpqUlhKWVhoaVJ3cVRJUi9IY3lMYk9KWkMv?= =?utf-8?B?dWxtL2FqWXQ0NlBKN2dYdzZ3aXZDbGF4UGhvVVBFS2VYOEN4TjBBcWg2S3Av?= =?utf-8?B?Z2lxVVBGUTAxU2N0R1BzdmlWRWJBU3NvZitMdjRZS2RVdGZEVWYrMWFnYndm?= =?utf-8?B?aDRGVlg1enR5ZDZGVjUyM3FMYk1ubHRNbUh6NHhIbzJCWk41OUwwbWhpZ1pq?= =?utf-8?B?WkcyNVBiVllUYklEa1pJRFhHT0FjYzdxRmpLSmg0KzNPMWZ0RkZpdTZDUEdZ?= =?utf-8?B?OUprcUl4QUp4QXdBNFo2cXJZNnFvNHRwZVVyZithUFhCOUZQVHc5N3hBbllO?= =?utf-8?Q?h6YLftwG9kPiR?= X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2956; 6:9nOcDbXhm9R8ACSawi0xcNwcmz3agq+yahu++QX0cIwNzCIePyb8DIMXqU3XRRDX2Y4E60aTkznq8uege1plxLaB3I0o5esfGzv6xUd9Ym0LKFy7iS4XjnszZpaI8vojW2KxsPEM2MOKJ5In2foJNr8Y/CdM5PqLKOCbgya4IUgyXFA71Fp2yRVxawtzkJyN4lid4tDiUORzECEmYUf+/MBM/X3ROtYxKFwg9aGWeXjK8Sa+0FRFi7ae1iIY/E1bJYO53HYm4JnjIWwVXrDPMLD1uvgm4wK8lqrUw0T8/Dx+kgb6okaHlsmLN2recVR884/jxYHxZLTeBaO7jU4meHc8WUafvHzVmT2Te4vBuHB16UdE2tkx6YWX7J0rpyEYM/WdXqlX5z6ieoZIWhvyL2OJ18T9wvxwzog+Oe4wLSA=; 5:6kBKW+wsf4tY61PSb/PYArALYKVqwsanu8XsXdBeY2hJ5kTidRsjpcbb5NmkznYbEaheChYu76+ZesAkW4J75yENuwe+wPTvUum6PzfERm6/iLr/EQ4pz7je51tUHk3tI4uR0Bhj7VuOd4yCMqXd76DA5URdtIwbA7bwocrd/DTB8J+yN7M7QzIpnPRIbBhl; 24:O4GVL/te4PNDQTzdBnxQstQgOWkIP5hFAGBEf9lKEbrMrYKJlZetSPjJDxtT29uXYWEIb7gF6PtelbOjGHGElqGbrgCVkS6c6Mo/r3jhiI4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2956; 7:/dixXSiKe58DW0XCtzP46pAQwZmoKt2zt20uq0lGzXO8dsH4CPJqI3OEew2WjG+plMIldDz/z6STfi5gLOnzyUbFjU5sZ6H+B1GkAJrpZYWaZhUPxUY+vl8FhOfm0QTfL98Rnm+xB8BEHY1/1/1EkiKebLMY3lgEJ9EBhuY696z8EYUFvMLI+Cm7MRThlv/PJ4Cxo73WHsaXh9hvaarszRxSaqCmH1pua9V9Gk9x2+EMX4/g8s07hFHngaPde6Up/0CODYts4G+JnSWC/V2+4D03EqluOzh73pIOOGj5Rax7WK4PIHdSxK8XNfEkyOs3pv+uVP8r7JHHOjgRt2oOqdOlY5W/VRjvXRvqJWwLrOv13/pPvzheLnXvNawEDpiO+x0uicVxiTHmWPRif0Uur5gaXJcD+/V2JNSD9eeQEW9hzJIYS4yjjWqo1gaMCNOnMvOQGHoryV4v+YToeDVZHvfStZKPnVduT4Qj2FGqKxOvFMj6Ge4kkCrLTKrtB02kcGxYdWnlhE4/8HFhTBw5tA== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2017 12:07:47.2157 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB2956 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP sg_count() internally calls sg_nents_for_len(), which could fail in case the required number of bytes is larger than the total bytes in the S/G. Thus, add checks to validate the input. Signed-off-by: Horia Geantă --- drivers/crypto/caam/caamalg.c | 44 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/drivers/crypto/caam/caamalg.c b/drivers/crypto/caam/caamalg.c index 05d4690351b9..ed8a04412767 100644 --- a/drivers/crypto/caam/caamalg.c +++ b/drivers/crypto/caam/caamalg.c @@ -1335,13 +1335,31 @@ static struct aead_edesc *aead_edesc_alloc(struct aead_request *req, if (unlikely(req->dst != req->src)) { src_nents = sg_count(req->src, req->assoclen + req->cryptlen); + if (unlikely(src_nents < 0)) { + dev_err(jrdev, "Insufficient bytes (%d) in src S/G\n", + req->assoclen + req->cryptlen); + return ERR_PTR(src_nents); + } + dst_nents = sg_count(req->dst, req->assoclen + req->cryptlen + (encrypt ? authsize : (-authsize))); + if (unlikely(dst_nents < 0)) { + dev_err(jrdev, "Insufficient bytes (%d) in dst S/G\n", + req->assoclen + req->cryptlen + + (encrypt ? authsize : (-authsize))); + return ERR_PTR(dst_nents); + } } else { src_nents = sg_count(req->src, req->assoclen + req->cryptlen + (encrypt ? authsize : 0)); + if (unlikely(src_nents < 0)) { + dev_err(jrdev, "Insufficient bytes (%d) in src S/G\n", + req->assoclen + req->cryptlen + + (encrypt ? authsize : 0)); + return ERR_PTR(src_nents); + } } /* Check if data are contiguous. */ @@ -1609,9 +1627,20 @@ static struct ablkcipher_edesc *ablkcipher_edesc_alloc(struct ablkcipher_request int sec4_sg_index; src_nents = sg_count(req->src, req->nbytes); + if (unlikely(src_nents < 0)) { + dev_err(jrdev, "Insufficient bytes (%d) in src S/G\n", + req->nbytes); + return ERR_PTR(src_nents); + } - if (req->dst != req->src) + if (req->dst != req->src) { dst_nents = sg_count(req->dst, req->nbytes); + if (unlikely(dst_nents < 0)) { + dev_err(jrdev, "Insufficient bytes (%d) in dst S/G\n", + req->nbytes); + return ERR_PTR(dst_nents); + } + } if (likely(req->src == req->dst)) { sgc = dma_map_sg(jrdev, req->src, src_nents ? : 1, @@ -1807,6 +1836,11 @@ static struct ablkcipher_edesc *ablkcipher_giv_edesc_alloc( int sec4_sg_index; src_nents = sg_count(req->src, req->nbytes); + if (unlikely(src_nents < 0)) { + dev_err(jrdev, "Insufficient bytes (%d) in src S/G\n", + req->nbytes); + return ERR_PTR(src_nents); + } if (likely(req->src == req->dst)) { sgc = dma_map_sg(jrdev, req->src, src_nents ? : 1, @@ -1826,6 +1860,12 @@ static struct ablkcipher_edesc *ablkcipher_giv_edesc_alloc( } dst_nents = sg_count(req->dst, req->nbytes); + if (unlikely(dst_nents < 0)) { + dev_err(jrdev, "Insufficient bytes (%d) in dst S/G\n", + req->nbytes); + return ERR_PTR(dst_nents); + } + sgc = dma_map_sg(jrdev, req->dst, dst_nents ? : 1, DMA_FROM_DEVICE); if (unlikely(!sgc)) { @@ -1914,7 +1954,7 @@ static int ablkcipher_givencrypt(struct skcipher_givcrypt_request *creq) struct crypto_ablkcipher *ablkcipher = crypto_ablkcipher_reqtfm(req); struct caam_ctx *ctx = crypto_ablkcipher_ctx(ablkcipher); struct device *jrdev = ctx->jrdev; - bool iv_contig; + bool iv_contig = false; u32 *desc; int ret = 0;