Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp5244795ybl; Tue, 14 Jan 2020 06:00:10 -0800 (PST) X-Google-Smtp-Source: APXvYqzMin7Tj4oZJyO4HFALTaj/C5TE3E7tHxzntcC4HayaJwuNXrOQzjyQ/R9Jn6ZmXJ8z3Clp X-Received: by 2002:a9d:5784:: with SMTP id q4mr17387289oth.278.1579010409739; Tue, 14 Jan 2020 06:00:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1579010409; cv=none; d=google.com; s=arc-20160816; b=ktKta159FQk1fx4X8NiVs458Dup+moGAlP+jvMKMLDCjKoo5Rz7cnp4quPDnOQT3lZ Boi6mjGJFWDvILM7t0R/Q7gVh6So9FK3JyZdPmI/Y3r00566sapC77foONo0YR+vUH+0 vjQ5xroMxZV4USCg21BbxDaRDT71Va89SF10s5CrBlZrHEjuk/bnNmFG44APvLrACUMv sHgN55Qei0ot1f30VuJnAr7vdEBOnj5mVGaQsWtcQQ0cwx/NdArxu9uq00u7PGcxnBHN nRDEfvTHPucno/EUFXukCGs0xNMq9iNMSUWCHgrJr7DkLkrXSbwJ1bSBreYNf35RJZM7 uEZw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=CpAqaZx6JeHzamdabNXS/MeiqNHInVywNzBkpn7W7C4=; b=uNW4VIPMza6TMN/3i2HsMACmA0n8XbX6EPktr28YDTCfTE1fEUUAC9r03DyICjg8xx UHxPWDPYfurl8AJA79tqOcPOFJZ9IcdsjHLghCrfggllO0DOm15YtZRFeZuJelrQj5FM Ry8AR02PSIRa7eDWid8cA8i2KBrzKKuzanOM8o8Bug2FDZUqCJlRp7fp+Gldo/zQJJ8O /qlhMu1RewcgTxjdgX7MPX51q8ALv75S6hUnu4bdy//xQbchSQF4DCZxIkYFcXJL85Z1 ok5NB501VRfEaF2y2ZXmd5lHqe6Mdatcqw4Rc/FX3VmdAjQpZIH9VTu+wsumYvO7zron cgeg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=EGE60Tz9; spf=pass (google.com: best guess record for domain of linux-crypto-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l5si7572462oil.96.2020.01.14.05.59.59; Tue, 14 Jan 2020 06:00:09 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-crypto-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=EGE60Tz9; spf=pass (google.com: best guess record for domain of linux-crypto-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728918AbgANN7y (ORCPT + 99 others); Tue, 14 Jan 2020 08:59:54 -0500 Received: from mail-wm1-f66.google.com ([209.85.128.66]:52876 "EHLO mail-wm1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727289AbgANN7x (ORCPT ); Tue, 14 Jan 2020 08:59:53 -0500 Received: by mail-wm1-f66.google.com with SMTP id p9so13922533wmc.2; Tue, 14 Jan 2020 05:59:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=CpAqaZx6JeHzamdabNXS/MeiqNHInVywNzBkpn7W7C4=; b=EGE60Tz9ZomQozYGZ/klz3rYuQFmxyX/3ipXjYNC2U1eKb5UWY4x3m/pWmsI9myf1r UpibKFW4DOAw/goE/hdwe8S4JkRJvWfA7bQR4zvQm10+mEvPFqQJThEeKdgs7JKeMIQG fiUgFXYCSS+7SlaTMVUD1Vys/I00NPBymU0+qrlXceClhkgNI+4lFy+rM+Ud36ROg/4c 1fHrX+5g9m9d1xROUHKCSLUz1+yeyQnke9P7l0rheXf6k4lTij/EkdAGpqoAm4FdY3/I fNBXEgHqARWslgm5hDKc4ORHALnr9CQIC2Y9RljKGyDgNy/mfxqYXGpw1GwiEAFjRx6A 4BwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=CpAqaZx6JeHzamdabNXS/MeiqNHInVywNzBkpn7W7C4=; b=an7vPKzVa2ktIpEnzyj6rhVSQIKH4ZScm5R9ujQiHsVL3hnVIhIftW9ny5Pz7KUuey 1vzOEsgFin6a0y8LorcSeYRqZXca/ztH1NjKVFBOy8Aj44PUUBT8z6uJMYltthLqAz03 tIcimhZyNSCna5YxeslSJmeoYnAmKhktyWjM/niAXtG71i23ic3ABa74f2mOHkiUidQR E83CI3wISzVxgiE2TjyW2p3kSmoAiHIk/NHgbHmneb/FnWUDOBR6VAL4g0WFblAWuMkS sr5Q4A9JFO/zUGaYkMW4uLiJirg81IsPBhFm6ARwzX5jHm9AwIn4U54Ktex4daJKqNhf 3UQg== X-Gm-Message-State: APjAAAVCByFp3Y11IByXSEMJsOCSQ54sp8jqmpVVA5b3PpjAW8nC31pa pgPfsUV+w3jt50JxveG7qN0= X-Received: by 2002:a05:600c:1003:: with SMTP id c3mr27443453wmc.47.1579010391218; Tue, 14 Jan 2020 05:59:51 -0800 (PST) Received: from Red.localdomain ([2a01:cb1d:147:7200:2e56:dcff:fed2:c6d6]) by smtp.googlemail.com with ESMTPSA id 4sm17854448wmg.22.2020.01.14.05.59.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jan 2020 05:59:50 -0800 (PST) From: Corentin Labbe To: alexandre.torgue@st.com, davem@davemloft.net, herbert@gondor.apana.org.au, mcoquelin.stm32@gmail.com, mripard@kernel.org, wens@csie.org, iuliana.prodan@nxp.com, horia.geanta@nxp.com, aymen.sghaier@nxp.com Cc: linux-arm-kernel@lists.infradead.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-sunxi@googlegroups.com, Corentin Labbe Subject: [PATCH RFC 01/10] crypto: sun8i-ce: move iv data to request context Date: Tue, 14 Jan 2020 14:59:27 +0100 Message-Id: <20200114135936.32422-2-clabbe.montjoie@gmail.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200114135936.32422-1-clabbe.montjoie@gmail.com> References: <20200114135936.32422-1-clabbe.montjoie@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org Instead of storing IV data in the channel context, store them in the request context. Storing them in the channel structure was conceptualy wrong since they are per request related. Signed-off-by: Corentin Labbe --- .../allwinner/sun8i-ce/sun8i-ce-cipher.c | 27 +++++++++---------- drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h | 10 ++++--- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c index 75e2bef2b363..6108cea0e0bd 100644 --- a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c +++ b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c @@ -91,7 +91,6 @@ static int sun8i_ce_cipher(struct skcipher_request *areq) struct scatterlist *sg; unsigned int todo, len, offset, ivsize; dma_addr_t addr_iv = 0, addr_key = 0; - void *backup_iv = NULL; u32 common, sym; int flow, i; int nr_sgs = 0; @@ -154,24 +153,24 @@ static int sun8i_ce_cipher(struct skcipher_request *areq) ivsize = crypto_skcipher_ivsize(tfm); if (areq->iv && crypto_skcipher_ivsize(tfm) > 0) { - chan->ivlen = ivsize; - chan->bounce_iv = kzalloc(ivsize, GFP_KERNEL | GFP_DMA); - if (!chan->bounce_iv) { + rctx->ivlen = ivsize; + rctx->bounce_iv = kzalloc(ivsize, GFP_KERNEL | GFP_DMA); + if (!rctx->bounce_iv) { err = -ENOMEM; goto theend_key; } if (rctx->op_dir & CE_DECRYPTION) { - backup_iv = kzalloc(ivsize, GFP_KERNEL); - if (!backup_iv) { + rctx->backup_iv = kzalloc(ivsize, GFP_KERNEL); + if (!rctx->backup_iv) { err = -ENOMEM; goto theend_key; } offset = areq->cryptlen - ivsize; - scatterwalk_map_and_copy(backup_iv, areq->src, offset, - ivsize, 0); + scatterwalk_map_and_copy(rctx->backup_iv, areq->src, + offset, ivsize, 0); } - memcpy(chan->bounce_iv, areq->iv, ivsize); - addr_iv = dma_map_single(ce->dev, chan->bounce_iv, chan->ivlen, + memcpy(rctx->bounce_iv, areq->iv, ivsize); + addr_iv = dma_map_single(ce->dev, rctx->bounce_iv, rctx->ivlen, DMA_TO_DEVICE); cet->t_iv = cpu_to_le32(addr_iv); if (dma_mapping_error(ce->dev, addr_iv)) { @@ -252,17 +251,17 @@ static int sun8i_ce_cipher(struct skcipher_request *areq) theend_iv: if (areq->iv && ivsize > 0) { if (addr_iv) - dma_unmap_single(ce->dev, addr_iv, chan->ivlen, + dma_unmap_single(ce->dev, addr_iv, rctx->ivlen, DMA_TO_DEVICE); offset = areq->cryptlen - ivsize; if (rctx->op_dir & CE_DECRYPTION) { - memcpy(areq->iv, backup_iv, ivsize); - kzfree(backup_iv); + memcpy(areq->iv, rctx->backup_iv, ivsize); + kzfree(rctx->backup_iv); } else { scatterwalk_map_and_copy(areq->iv, areq->dst, offset, ivsize, 0); } - kfree(chan->bounce_iv); + kfree(rctx->bounce_iv); } theend_key: diff --git a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h index 8f8404c84a4d..49507ef2ec63 100644 --- a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h +++ b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h @@ -129,8 +129,6 @@ struct ce_task { /* * struct sun8i_ce_flow - Information used by each flow * @engine: ptr to the crypto_engine for this flow - * @bounce_iv: buffer which contain the IV - * @ivlen: size of bounce_iv * @complete: completion for the current task on this flow * @status: set to 1 by interrupt if task is done * @t_phy: Physical address of task @@ -139,8 +137,6 @@ struct ce_task { */ struct sun8i_ce_flow { struct crypto_engine *engine; - void *bounce_iv; - unsigned int ivlen; struct completion complete; int status; dma_addr_t t_phy; @@ -183,10 +179,16 @@ struct sun8i_ce_dev { * struct sun8i_cipher_req_ctx - context for a skcipher request * @op_dir: direction (encrypt vs decrypt) for this request * @flow: the flow to use for this request + * @backup_iv: buffer which contain the next IV to store + * @bounce_iv: buffer which contain a copy of IV + * @ivlen: size of bounce_iv */ struct sun8i_cipher_req_ctx { u32 op_dir; int flow; + void *backup_iv; + void *bounce_iv; + unsigned int ivlen; }; /* -- 2.24.1