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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7152FC4332F for ; Thu, 29 Dec 2022 08:58:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B40AD8E0002; Thu, 29 Dec 2022 03:58:53 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id AF1298E0001; Thu, 29 Dec 2022 03:58:53 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 992788E0002; Thu, 29 Dec 2022 03:58:53 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 81C308E0001 for ; Thu, 29 Dec 2022 03:58:53 -0500 (EST) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 4F4A6AB267 for ; Thu, 29 Dec 2022 08:58:53 +0000 (UTC) X-FDA: 80294743746.29.66C57B1 Received: from formenos.hmeau.com (helcar.hmeau.com [216.24.177.18]) by imf29.hostedemail.com (Postfix) with ESMTP id 256B9120006 for ; Thu, 29 Dec 2022 08:58:50 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf29.hostedemail.com: domain of herbert@gondor.apana.org.au designates 216.24.177.18 as permitted sender) smtp.mailfrom=herbert@gondor.apana.org.au ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1672304332; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=qfaLllHRaHbW8ZCIoC+R7+iqY6qh6Nkn4XDakm4eQ/w=; b=aoXBV5yeGbSvjojfUU0pWtNJVUktYO8Facm8Hn5vQ9wV2l3+Wv7vh5YWh1HXX5R609EdZT BP7vZAUuGNs5hZhAdTil8sJpfmmlv8jOSzDk1YM3u/OW7NDh3bncjq96YEI5nYJ+KjTEUQ kxYstiBWyxked1N97RGOXfd1cP7ltEw= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf29.hostedemail.com: domain of herbert@gondor.apana.org.au designates 216.24.177.18 as permitted sender) smtp.mailfrom=herbert@gondor.apana.org.au ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1672304332; a=rsa-sha256; cv=none; b=uPKIpz+SJpFXDbevs2sgkCcb4qXP5735k+JW0sPdwEgwFMRvp2g7ZmMxhYSpeCVM0Gop4j Oe9K54OkACgIYOOeMkw/4tXd5LujLqgF1TvRIpNw/yrvWqLGn0/iMy1AQwADFa8GNVIvEZ j7U9NiaGZmEgQxsVepKxCfobLAWvFs0= Received: from loth.rohan.me.apana.org.au ([192.168.167.2]) by formenos.hmeau.com with smtp (Exim 4.94.2 #2 (Debian)) id 1pAok1-00Bwg6-1M; Thu, 29 Dec 2022 16:58:22 +0800 Received: by loth.rohan.me.apana.org.au (sSMTP sendmail emulation); Thu, 29 Dec 2022 16:58:21 +0800 Date: Thu, 29 Dec 2022 16:58:21 +0800 From: Herbert Xu To: Christoph Hellwig Cc: Catalin Marinas , Ard Biesheuvel , Will Deacon , Marc Zyngier , Arnd Bergmann , Greg Kroah-Hartman , Andrew Morton , Linus Torvalds , Linux Memory Management List , Linux ARM , LinuxKernelMailingList@gondor.apana.org.au, linux-kernel@vger.kernel.org, "David S. Miller" , Linux Crypto Mailing List , Corentin Labbe Subject: [PATCH] crypto: sun8i-ss - Remove GFP_DMA and add DMA alignment padding Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 256B9120006 X-Rspam-User: X-Stat-Signature: jwfn3kb96oako4dgbsq7j9wn47pan69e X-HE-Tag: 1672304330-36099 X-HE-Meta: U2FsdGVkX1/Mq4oTGe4YT7MLwNHkgfHUK6T/GNT6mFSHwc2pDp7v5WAxzuxhvDn6rn7eZc2FTVlfJm233FDmY3SXWfLfmtnv/hI6urOoRRslCQk3Z7X5I/Pa0LrrJMFpN+xgoWrWw5MmjCOJQQMW8Tw1eM97Z5Mj1Ajw4leI5HKAV7A3GbmO1IgFnm69EneVpERMOEE5N1DP05JYzshH8VwVHjyBqTVhSP2PsPmDle7qixQQJWAeq0+1f0MQ+EpekkaUdv4iegIoKHEDBCjZPQLhKFwTduFSCpLDeObuWWT3bXgNCc7zysc8xWPHOzizoC2lC2Mm8IgmSE/pOiIftGraVc/PwfrtEfA+gBkUwhorwXTq/MJZgWYsw0AudGSs2IbphT1wDQ/tiqntkryIaxG99zrFmD4/Kov7E4m0af5zmsIdCnraRGPX3bFM/aLX3kw3vJaJMhQetM7LLTfvOXETNMBtgLJK7Kwwd2g9yBrIhi63yY+7A+rZmjnQ/P/XNiTl7C993cBSXH6I+0mWppAGQzjX1VCvS4fZx9cLjf0K2gM+mdCC1yRScM/pcWCm8tJRF00n1jTf05lVkLvNSRnlIvKB3JwFYZo+tVaGPbWTQisKkRglbi3Jk4d1lUPysULez0qq8TsTasLoDJonFRmlm5R1xCulPrePjzgE0zoIOa54gc750ILwuaKW4J66nOE2fL2dWiDRC5kIf0UuekXDdfvZQhm4XLdg3i+bQUH+beSZdN2p5BMbITMquRTCNWJAVcb1YjKdTBX1Vj2GCM2wZS8bs2wj0Fjqp5QDU2OsUheTh7wA8W1Dez7iTYSfUDyPRmtKZ9kl7Gri8UISxTxoZqMnnA9ob4D65TnY14lPU1Ky1B0CWg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: GFP_DMA does not guarantee that the returned memory is aligned for DMA. In fact for sun8i-ss it is superfluous and can be removed. However, kmalloc may start returning DMA-unaligned memory in future so fix this by adding the alignment by hand. Signed-off-by: Herbert Xu diff --git a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c index 902f6be057ec..83c6dfad77e1 100644 --- a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c +++ b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c @@ -452,7 +452,7 @@ int sun8i_ss_aes_setkey(struct crypto_skcipher *tfm, const u8 *key, } kfree_sensitive(op->key); op->keylen = keylen; - op->key = kmemdup(key, keylen, GFP_KERNEL | GFP_DMA); + op->key = kmemdup(key, keylen, GFP_KERNEL); if (!op->key) return -ENOMEM; @@ -475,7 +475,7 @@ int sun8i_ss_des3_setkey(struct crypto_skcipher *tfm, const u8 *key, kfree_sensitive(op->key); op->keylen = keylen; - op->key = kmemdup(key, keylen, GFP_KERNEL | GFP_DMA); + op->key = kmemdup(key, keylen, GFP_KERNEL); if (!op->key) return -ENOMEM; diff --git a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c index ac2329e2b0e5..c9dc06f97857 100644 --- a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c +++ b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -527,7 +528,7 @@ static int allocate_flows(struct sun8i_ss_dev *ss) init_completion(&ss->flows[i].complete); ss->flows[i].biv = devm_kmalloc(ss->dev, AES_BLOCK_SIZE, - GFP_KERNEL | GFP_DMA); + GFP_KERNEL); if (!ss->flows[i].biv) { err = -ENOMEM; goto error_engine; @@ -535,7 +536,7 @@ static int allocate_flows(struct sun8i_ss_dev *ss) for (j = 0; j < MAX_SG; j++) { ss->flows[i].iv[j] = devm_kmalloc(ss->dev, AES_BLOCK_SIZE, - GFP_KERNEL | GFP_DMA); + GFP_KERNEL); if (!ss->flows[i].iv[j]) { err = -ENOMEM; goto error_engine; @@ -544,13 +545,15 @@ static int allocate_flows(struct sun8i_ss_dev *ss) /* the padding could be up to two block. */ ss->flows[i].pad = devm_kmalloc(ss->dev, MAX_PAD_SIZE, - GFP_KERNEL | GFP_DMA); + GFP_KERNEL); if (!ss->flows[i].pad) { err = -ENOMEM; goto error_engine; } - ss->flows[i].result = devm_kmalloc(ss->dev, SHA256_DIGEST_SIZE, - GFP_KERNEL | GFP_DMA); + ss->flows[i].result = + devm_kmalloc(ss->dev, max(SHA256_DIGEST_SIZE, + dma_get_cache_alignment()), + GFP_KERNEL); if (!ss->flows[i].result) { err = -ENOMEM; goto error_engine; diff --git a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c index 36a82b22953c..577bf636f7fb 100644 --- a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c +++ b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c @@ -79,10 +79,10 @@ int sun8i_ss_hmac_setkey(struct crypto_ahash *ahash, const u8 *key, memcpy(tfmctx->key, key, keylen); } - tfmctx->ipad = kzalloc(bs, GFP_KERNEL | GFP_DMA); + tfmctx->ipad = kzalloc(bs, GFP_KERNEL); if (!tfmctx->ipad) return -ENOMEM; - tfmctx->opad = kzalloc(bs, GFP_KERNEL | GFP_DMA); + tfmctx->opad = kzalloc(bs, GFP_KERNEL); if (!tfmctx->opad) { ret = -ENOMEM; goto err_opad; diff --git a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-prng.c b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-prng.c index dd677e9ed06f..70c7b5d571b8 100644 --- a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-prng.c +++ b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-prng.c @@ -11,6 +11,8 @@ */ #include "sun8i-ss.h" #include +#include +#include #include #include @@ -25,7 +27,7 @@ int sun8i_ss_prng_seed(struct crypto_rng *tfm, const u8 *seed, ctx->seed = NULL; } if (!ctx->seed) - ctx->seed = kmalloc(slen, GFP_KERNEL | GFP_DMA); + ctx->seed = kmalloc(slen, GFP_KERNEL); if (!ctx->seed) return -ENOMEM; @@ -58,6 +60,7 @@ int sun8i_ss_prng_generate(struct crypto_rng *tfm, const u8 *src, struct sun8i_ss_rng_tfm_ctx *ctx = crypto_rng_ctx(tfm); struct rng_alg *alg = crypto_rng_alg(tfm); struct sun8i_ss_alg_template *algt; + unsigned int todo_with_padding; struct sun8i_ss_dev *ss; dma_addr_t dma_iv, dma_dst; unsigned int todo; @@ -81,7 +84,11 @@ int sun8i_ss_prng_generate(struct crypto_rng *tfm, const u8 *src, todo = dlen + PRNG_SEED_SIZE + PRNG_DATA_SIZE; todo -= todo % PRNG_DATA_SIZE; - d = kzalloc(todo, GFP_KERNEL | GFP_DMA); + todo_with_padding = ALIGN(todo, dma_get_cache_alignment()); + if (todo_with_padding < todo || todo < dlen) + return -EOVERFLOW; + + d = kzalloc(todo_with_padding, GFP_KERNEL); if (!d) return -ENOMEM; -- Email: Herbert Xu Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt