From patchwork Wed Mar 28 12:39:17 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Horia Geanta X-Patchwork-Id: 10313591 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 8364560353 for ; Wed, 28 Mar 2018 16:55:53 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 749EB295B2 for ; Wed, 28 Mar 2018 16:55:53 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7223E2973C; Wed, 28 Mar 2018 16:55:53 +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 AD65429741 for ; Wed, 28 Mar 2018 16:55:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751166AbeC1Qzs (ORCPT ); Wed, 28 Mar 2018 12:55:48 -0400 Received: from mail-sn1nam02on0087.outbound.protection.outlook.com ([104.47.36.87]:11139 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751434AbeC1Qzq (ORCPT ); Wed, 28 Mar 2018 12:55:46 -0400 Received: from BYAPR03CA0020.namprd03.prod.outlook.com (2603:10b6:a02:a8::33) by BL2PR03MB388.namprd03.prod.outlook.com (2a01:111:e400:c26::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.609.10; Wed, 28 Mar 2018 16:55:45 +0000 Received: from BN1AFFO11FD015.protection.gbl (2a01:111:f400:7c10::112) by BYAPR03CA0020.outlook.office365.com (2603:10b6:a02:a8::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.609.10 via Frontend Transport; Wed, 28 Mar 2018 16:55:44 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) 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.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BN1AFFO11FD015.mail.protection.outlook.com (10.58.52.75) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.527.18 via Frontend Transport; Wed, 28 Mar 2018 16:55:43 +0000 Received: from enigma.ea.freescale.net (enigma.ea.freescale.net [10.171.81.110]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id w2SCdcT9007021; Wed, 28 Mar 2018 05:39:42 -0700 From: =?UTF-8?q?Horia=20Geant=C4=83?= To: Herbert Xu CC: "David S. Miller" , , Aymen Sghaier , Gilad Ben-Yossef , David Gstir Subject: [PATCH 1/3] crypto: caam - fix DMA mapping dir for generated IV Date: Wed, 28 Mar 2018 15:39:17 +0300 Message-ID: <20180328123919.24120-2-horia.geanta@nxp.com> X-Mailer: git-send-email 2.16.2 In-Reply-To: <20180328123919.24120-1-horia.geanta@nxp.com> References: <20180328123919.24120-1-horia.geanta@nxp.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131667297442311250; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:CAL; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(376002)(396003)(346002)(39380400002)(39860400002)(2980300002)(1110001)(1109001)(339900001)(199004)(189003)(5820100001)(54906003)(77096007)(336012)(2616005)(6862004)(53936002)(106466001)(26005)(4326008)(107886003)(1076002)(76176011)(2870700001)(2906002)(126002)(36756003)(486005)(486005)(476003)(105606002)(26826003)(316002)(59450400001)(47776003)(11346002)(446003)(6666003)(85426001)(50466002)(97736004)(356003)(498600001)(81166006)(81156014)(8676002)(8936002)(68736007)(86362001)(305945005)(50226002)(5660300001)(23676004)(104016004); DIR:OUT; SFP:1101; SCL:1; SRVR:BL2PR03MB388; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD015; 1:Vso6NDTQz6OIz+1n0D1CW99A+qiMbFfbT9SnIArDw0MvHllY5Hy7izjtDc2uxFJ1nA6lW+qPZgf/g4HFk5TrC/xLaZaUW9Bo/A0TrooWcmzRnd0yWdNflMSz1VGzGq0T X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: df349d5b-359a-4e93-4af3-08d594ccbf0a X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(5600026)(4604075)(2017052603328); SRVR:BL2PR03MB388; X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB388; 3:0dtmWh1l+t0ho9hEQQIoz/1Ky0MVPH4y7h6MYfWr6kSmosZC6K1sQA7oGu6sq58maGPdvNoJtEZHrOGAz8odxhHNBJcmG9fImbwdevvSaJuxXIClRIlNlwSgngPCMK03TDz2xGbaqdvoW0n9XOPYZBaQYtPe843xdGMZa39sM/+S5QE8Zh2RSGPPj6BLGm4YTVQcWH7IxYHnKD9PXnydNwF0fmOiA5bz3zLXWFZYD4dEU5rl+JJPd3f5Iv2OGmrnxd+DF2UGQiNSq4I00997ePAo2kC3XBkciAFmWNBqvgKDSYxpCyYMnl4LP0wKer/Njv9k88u6PRR8HE5Ttp1VAUJTH+4b3SJIwtq78EKUvZE=; 25:8KG+T/TW6tjv7RjSRCNPsKw733N+tfRh5rEyOUlg/wTT7/zpXpZwkrobsjGguo1+4J9sXzkq+UngGfhxFJNsSe1ynkmbNF2/w0od8sxWObeo1l+BO6RPqyA20SEQq2ezAkhpcEaSSijBBnZiIpYTzVtqHqEu+7jHK+POpKJpXBuC9BIdTIqhYtocUM0T/JA+NCZE+vjOyaWi0ZAuayIUuFw4zYDeHuOLBJv+S/xnxaiElVLlHwCMVp5EPiYpQ8JM9zRdxAqasGdhsGOMRU1vGZL9g1rAdanB8Muxfz6OhLC6AEMykAAQ4eQP0KkwN3N8lgJYcrdR30KR/JZbI2o2RQ== X-MS-TrafficTypeDiagnostic: BL2PR03MB388: X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB388; 31:Eaw6QMYWXoT9ejphAH0HUBAHTwTCnShZqcmAwybBFRhOiA3jHOSVsGopYIaZlK0NRkOMlLB32lH+Ik3BtKISIgKThOWkAZ+2CoQXjLPEtCQjqGkIUnvx379FsVDKjMV6gtupyqILM25ECSydRc2h7xaQO/e4/Cafe00GhnPX3OBavkT9+w4uP+wXWriOhJ8HRSrLZ1BbCUQaaDcOPfEUUsrPwiYn0DuIhen07a825Bo=; 4:/g6PsbVUU7J2dh0PeuEIkZAENf1227fvIrN2zdkwJur5nH6YClPAb2ftcIIlLq7l4e51dlhn7zWLhKe1kHt2H7PFG/WaLs8vGFgVd1RWhAl+EWTje3s0CV5V+E5z13xL3BESQaIWucAfItO9B1EX/bEjI7RdNBPMWBVp3Ts+9Dq3q47x/GtBRyCRA7eOd+V8tLI63mZzfb3TxHhj/gilUyaj99VBoZIHlaROqpXPlOQY2OjTvQH34HoQztGSlD7gGZjUZ6yTe+HLxVyifDhbZzhW3FQFYR099HxILO1xV6YAQJZw9gruJGPwKFGkm8b9lgLgj4D5aqnCBxkuw4fy0A== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(2401047)(5005006)(8121501046)(3231221)(944501327)(52105095)(93006095)(93001095)(10201501046)(3002001)(6055026)(6096035)(20161123563025)(20161123565025)(20161123556025)(20161123559100)(20161123561025)(201703131430075)(201703131448075)(201703131433075)(201703151042153)(201708071742011); SRVR:BL2PR03MB388; BCL:0; PCL:0; RULEID:(400006); SRVR:BL2PR03MB388; X-Forefront-PRVS: 06259BA5A2 X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTDJQUjAzTUIzODg7MjM6VzM1TDVsTk9IN0d0ekVTM2lOdGlvMEU4R2FF?= =?utf-8?B?WGY2OStQeXJLaXMzSTJZUVphRUxDZUNhR0tNcFNQMmFBV3B5QW40eENuaFBz?= =?utf-8?B?a2RKTUxITFRnZ3R6K1R4bGYycDJmOTNHY1FwSExXcEgxaktONW1EdUpURDdm?= =?utf-8?B?MjAxV1ZXVERHSDIyNi9MQjMxN0hCL255c1dkcUd4MGVYeUhXcG0wbko5dS9O?= =?utf-8?B?R1FWUzNreUw2NitoOG0vT3RIbXdyWjJ0MVBGaHgwTkY3ZHVkMWxxT29raWdi?= =?utf-8?B?aXNUQ0hHbEhEdXlST0hCSVJCb0NIdVlnd3ViTWc5UjBzdk1hTFRtaEFMdWZE?= =?utf-8?B?K1F4VmMzK0dXUkZJeFVYQzY2TDBjWHNLYkVCbS9nQTRrMkxTOTdwZXY1b2dn?= =?utf-8?B?NHVrU0djSUU1aGcrN2VBSVBFNXpaalB4ZnV6NHE1dXJCdUk2bHRFWGNZWkNK?= =?utf-8?B?cC9hOHB2RExMV0JtQTRVK1hySC96R2NMelQrY2RpU1F4SHlySE5lZC8vTnRo?= =?utf-8?B?L0Yza1I5M2hjTEp3Vnd2WGtOZFBhVDFhMEdIbHBuaFJ1ZEt0Ym1KU1VWbnlX?= =?utf-8?B?OHN4Qm1kSDBoOFlSMzVmRUdaeHRxUVdXRGtGK0YvdkJZRzVmQ1lrTndPUHNi?= =?utf-8?B?ZFJUNHlCTUs3VjdidmdEN1dzVkN4SGRqSUFNWEhEbnhXZlVrbk9wMVVoZlQ5?= =?utf-8?B?NmtvQ1VEZEIzdGd6S3FTQm9SdExvdGVoWEVUV2F2dE5ObWVjL0ZjcWxyVnNT?= =?utf-8?B?YkpHN283bnlOc1RXajR4VDNXbFFTWU9tYzlHWVpycjlOMHRJcHBPTjZVaE1C?= =?utf-8?B?YnRWQU1mVVZNY1NXUTI2eERPbEpxU1E2dW9TeW1ZSjQyd3p3THE1Z0phKzhD?= =?utf-8?B?K2RYRUFBUWVQUHErZ2dURTc3U2JucndaME5Sd050V0Vra3UremVDSS9IYVpm?= =?utf-8?B?VTdHSVpONU44MHdkT1BhSnpHUysrZWVPN1JCZU4rUlREMnIyalVBdkluQlFL?= =?utf-8?B?bkJMU0FHS1RwN3E3Q01MdWt2K0N5REN2WXV0b3RtQjVBRVI0Q2w4STNNZzVQ?= =?utf-8?B?Wkk0TXltRW1LNytSY0lhc042eXpha0l1VXVKT3pGWklGdmRPUUZkYkpoa0c0?= =?utf-8?B?UnhOamZOS1VIdzlGRG94MkJtK3VaSGtLZlRqSzhJK0NUa3g2U0draVA4VHRU?= =?utf-8?B?U2xSWlhobmYrdVllRGFRRERqQjVDWXliSGJhMVRSL3FJMW9wVzVaVVZwditB?= =?utf-8?B?WHlqY25hU2lsWnoxRkd0WWY5OGNNV2UxalQxUEdTdlpRbXpSb3lFSmZjS2NY?= =?utf-8?B?KzdETE5IRkd3c2ovdzZGbi9OYnRNOFVZamZkelpUVjNtZUpoT1dONDJEdlVJ?= =?utf-8?B?cm9xTmhQbjJlQzdiZUdzTnlsMkFDSWFJRzJkd0R2ZHFmT0Q1UlJDWVJIYTVq?= =?utf-8?B?TGZXSllmVHUvQ0RyYVprVmtHd1JCRytqeHNVbFZRd3JNODF1UzBxWUhGV3Bt?= =?utf-8?B?eEE0V2ROVytacHlkLzJXZzRSdTJWaTZDNTFDbVZ6NHZNREZQVHhXTmFYY2lr?= =?utf-8?B?TzRlNndkNWxoazdZa1ZjYXpWOFkvZG1iMDJmbzg4eGFJdTBXOWlsTGlZRC9x?= =?utf-8?B?elJtblMzZXBCTHBRcUIvWEFFK0tNUm4yaGx4ZmJoeWp0eko2cEhCalp4bGdo?= =?utf-8?Q?4upWs/upMEw7LQxlg=3D?= X-Microsoft-Antispam-Message-Info: VMApAH9i9es10XquvaCNO8gV8bOLDsOcgdzTG2Nz0fVYX0zNb83ouXyGaUdh67ruyiRsGhpnEFwSDt6qUsvw2Y3Dps3B3o4eFeZFn0Asx32H56RDUMUQYEEEQ8bXfxjsmm4PlPRssPJMaABMoZWZVFTuq9IZjg9IR5Mp78gPJywfy8nPwYQu6HzGa1ccHezv X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB388; 6:LcJWZKQosFzP4bnbRotl94+59spewOwCeWKEKmQxS5UZTKI0bPpGjSQa4y8zE70T8ldCdTybOf5ZDcvwLGUMewSLQM0W1fwAmnFBrCqYmvIsNo7BXdlxIDcnSye9XCYMkZuuxAGtmT6fWInf1O1BOi0IOyWzi6VZpIIyoQ2mw7QqB4n4wr0ibaiaibZRxZcy6EAHuytQRACzXPWyaN66y8Xns+a+v/4iIRxauJ1oKS6GvarxYge7Jh7/HroosqUU8uZl3LKr6PuDwA5gAHzEwFM1aIiuAfTV+CYOPVTeYQM67E/fL3u7ziUGr5JRWRPk6nWcpNIawOKYwe56BxVIPd7ESzuQzdM63vp62XiDytnUpxob9J1w372euAX+Fh8sPHuLeacd1asElEo3vQ1vTsId+x/uAzJ+I6PCXK+7WuLiPTVArvS4VxvAoAq9d5VK8zsgp0lIOfK/OkUEp+4bhw==; 5:eDOgTkDT2AGgh6toFFrsGbyXC+5NkK7hhYnHaYx6WZ/iVr3PauCFkRILaASE9HzylY7+RqVCgEmLxpdszRfO/NlvZ/aIS3HSnBDyYT7ozS/p6H4oVULTbTFS8jTsjqE40FsoZZ3p197zl57IW1liaKOLFm05vewS0+V9gxR4w9k=; 24:6CY5W2IqJeQkagJq1WnPGojqCE0hbPdQC2LIYvFomfJOJFxA7wNYrfV0SL8HH0/iaaIBjzTVT5Q8FXK/LENctW0iopPJqo9fzXk0YrJRzBM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB388; 7:heGNebNMplv4RwrGLaYsQv9BY7BKHA3WO8tIYlGmaVQneHqdp1r5lpQK6HxUxx5zhUIyosCRv6Ay8bv6QgAWmTJ5IiIZe9C9MBWmVOX8aW/9f9B1Tshjm2lbQh8bAiomZRgndd19JKDU9iCX4PS6iZhVwfWLBmRGF0e012mXv8ZjrUCRxasQRrdc7cpwZpALNGNFMJ9aM3utpvNjmuDOK1hj+DZUwE6cdB6tDj28Zng6ex5544utpbolCHNckLKx X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2018 16:55:43.4355 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: df349d5b-359a-4e93-4af3-08d594ccbf0a X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2PR03MB388 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 In case of GIVCIPHER, IV is generated by the device. Fix the DMA mapping direction. Cc: # 3.19+ Fixes: 7222d1a34103 ("crypto: caam - add support for givencrypt cbc(aes) and rfc3686(ctr(aes))") Signed-off-by: Horia Geantă --- drivers/crypto/caam/caamalg.c | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/drivers/crypto/caam/caamalg.c b/drivers/crypto/caam/caamalg.c index 584a6c183548..a9a4df7012e2 100644 --- a/drivers/crypto/caam/caamalg.c +++ b/drivers/crypto/caam/caamalg.c @@ -767,6 +767,7 @@ struct aead_edesc { * @src_nents: number of segments in input s/w scatterlist * @dst_nents: number of segments in output s/w scatterlist * @iv_dma: dma address of iv for checking continuity and link table + * @iv_dir: DMA mapping direction for IV * @sec4_sg_bytes: length of dma mapped sec4_sg space * @sec4_sg_dma: bus physical mapped address of h/w link table * @sec4_sg: pointer to h/w link table @@ -776,6 +777,7 @@ struct ablkcipher_edesc { int src_nents; int dst_nents; dma_addr_t iv_dma; + enum dma_data_direction iv_dir; int sec4_sg_bytes; dma_addr_t sec4_sg_dma; struct sec4_sg_entry *sec4_sg; @@ -785,7 +787,8 @@ struct ablkcipher_edesc { static void caam_unmap(struct device *dev, struct scatterlist *src, struct scatterlist *dst, int src_nents, int dst_nents, - dma_addr_t iv_dma, int ivsize, dma_addr_t sec4_sg_dma, + dma_addr_t iv_dma, int ivsize, + enum dma_data_direction iv_dir, dma_addr_t sec4_sg_dma, int sec4_sg_bytes) { if (dst != src) { @@ -797,7 +800,7 @@ static void caam_unmap(struct device *dev, struct scatterlist *src, } if (iv_dma) - dma_unmap_single(dev, iv_dma, ivsize, DMA_TO_DEVICE); + dma_unmap_single(dev, iv_dma, ivsize, iv_dir); if (sec4_sg_bytes) dma_unmap_single(dev, sec4_sg_dma, sec4_sg_bytes, DMA_TO_DEVICE); @@ -808,7 +811,7 @@ static void aead_unmap(struct device *dev, struct aead_request *req) { caam_unmap(dev, req->src, req->dst, - edesc->src_nents, edesc->dst_nents, 0, 0, + edesc->src_nents, edesc->dst_nents, 0, 0, DMA_NONE, edesc->sec4_sg_dma, edesc->sec4_sg_bytes); } @@ -821,7 +824,7 @@ static void ablkcipher_unmap(struct device *dev, caam_unmap(dev, req->src, req->dst, edesc->src_nents, edesc->dst_nents, - edesc->iv_dma, ivsize, + edesc->iv_dma, ivsize, edesc->iv_dir, edesc->sec4_sg_dma, edesc->sec4_sg_bytes); } @@ -1285,7 +1288,7 @@ static struct aead_edesc *aead_edesc_alloc(struct aead_request *req, GFP_DMA | flags); if (!edesc) { caam_unmap(jrdev, req->src, req->dst, src_nents, dst_nents, 0, - 0, 0, 0); + 0, DMA_NONE, 0, 0); return ERR_PTR(-ENOMEM); } @@ -1548,7 +1551,7 @@ static struct ablkcipher_edesc *ablkcipher_edesc_alloc(struct ablkcipher_request if (dma_mapping_error(jrdev, iv_dma)) { dev_err(jrdev, "unable to map IV\n"); caam_unmap(jrdev, req->src, req->dst, src_nents, dst_nents, 0, - 0, 0, 0); + 0, DMA_NONE, 0, 0); return ERR_PTR(-ENOMEM); } @@ -1570,7 +1573,7 @@ static struct ablkcipher_edesc *ablkcipher_edesc_alloc(struct ablkcipher_request if (!edesc) { dev_err(jrdev, "could not allocate extended descriptor\n"); caam_unmap(jrdev, req->src, req->dst, src_nents, dst_nents, - iv_dma, ivsize, 0, 0); + iv_dma, ivsize, DMA_TO_DEVICE, 0, 0); return ERR_PTR(-ENOMEM); } @@ -1579,6 +1582,7 @@ static struct ablkcipher_edesc *ablkcipher_edesc_alloc(struct ablkcipher_request edesc->sec4_sg_bytes = sec4_sg_bytes; edesc->sec4_sg = (void *)edesc + sizeof(struct ablkcipher_edesc) + desc_bytes; + edesc->iv_dir = DMA_TO_DEVICE; if (!in_contig) { dma_to_sec4_sg_one(edesc->sec4_sg, iv_dma, ivsize, 0); @@ -1596,7 +1600,7 @@ static struct ablkcipher_edesc *ablkcipher_edesc_alloc(struct ablkcipher_request if (dma_mapping_error(jrdev, edesc->sec4_sg_dma)) { dev_err(jrdev, "unable to map S/G table\n"); caam_unmap(jrdev, req->src, req->dst, src_nents, dst_nents, - iv_dma, ivsize, 0, 0); + iv_dma, ivsize, DMA_TO_DEVICE, 0, 0); kfree(edesc); return ERR_PTR(-ENOMEM); } @@ -1754,11 +1758,11 @@ static struct ablkcipher_edesc *ablkcipher_giv_edesc_alloc( * Check if iv can be contiguous with source and destination. * If so, include it. If not, create scatterlist. */ - iv_dma = dma_map_single(jrdev, greq->giv, ivsize, DMA_TO_DEVICE); + iv_dma = dma_map_single(jrdev, greq->giv, ivsize, DMA_FROM_DEVICE); if (dma_mapping_error(jrdev, iv_dma)) { dev_err(jrdev, "unable to map IV\n"); caam_unmap(jrdev, req->src, req->dst, src_nents, dst_nents, 0, - 0, 0, 0); + 0, DMA_NONE, 0, 0); return ERR_PTR(-ENOMEM); } @@ -1779,7 +1783,7 @@ static struct ablkcipher_edesc *ablkcipher_giv_edesc_alloc( if (!edesc) { dev_err(jrdev, "could not allocate extended descriptor\n"); caam_unmap(jrdev, req->src, req->dst, src_nents, dst_nents, - iv_dma, ivsize, 0, 0); + iv_dma, ivsize, DMA_FROM_DEVICE, 0, 0); return ERR_PTR(-ENOMEM); } @@ -1788,6 +1792,7 @@ static struct ablkcipher_edesc *ablkcipher_giv_edesc_alloc( edesc->sec4_sg_bytes = sec4_sg_bytes; edesc->sec4_sg = (void *)edesc + sizeof(struct ablkcipher_edesc) + desc_bytes; + edesc->iv_dir = DMA_FROM_DEVICE; if (mapped_src_nents > 1) sg_to_sec4_sg_last(req->src, mapped_src_nents, edesc->sec4_sg, @@ -1805,7 +1810,7 @@ static struct ablkcipher_edesc *ablkcipher_giv_edesc_alloc( if (dma_mapping_error(jrdev, edesc->sec4_sg_dma)) { dev_err(jrdev, "unable to map S/G table\n"); caam_unmap(jrdev, req->src, req->dst, src_nents, dst_nents, - iv_dma, ivsize, 0, 0); + iv_dma, ivsize, DMA_FROM_DEVICE, 0, 0); kfree(edesc); return ERR_PTR(-ENOMEM); }