From: Eric Biggers <ebiggers@kernel.org>
To: linux-crypto@vger.kernel.org
Subject: [PATCH 19/30] net: ipv6: stop checking crypto_ahash_alignmask
Date: Sun, 22 Oct 2023 01:10:49 -0700 [thread overview]
Message-ID: <20231022081100.123613-20-ebiggers@kernel.org> (raw)
In-Reply-To: <20231022081100.123613-1-ebiggers@kernel.org>
From: Eric Biggers <ebiggers@google.com>
Now that the alignmask for ahash and shash algorithms is always 0,
crypto_ahash_alignmask() always returns 0 and will be removed. In
preparation for this, stop checking crypto_ahash_alignmask() in ah6.c.
Signed-off-by: Eric Biggers <ebiggers@google.com>
---
net/ipv6/ah6.c | 17 +++++++----------
1 file changed, 7 insertions(+), 10 deletions(-)
diff --git a/net/ipv6/ah6.c b/net/ipv6/ah6.c
index 56f9282ec5df4..2016e90e6e1d2 100644
--- a/net/ipv6/ah6.c
+++ b/net/ipv6/ah6.c
@@ -44,23 +44,21 @@ struct ah_skb_cb {
void *tmp;
};
#define AH_SKB_CB(__skb) ((struct ah_skb_cb *)&((__skb)->cb[0]))
static void *ah_alloc_tmp(struct crypto_ahash *ahash, int nfrags,
unsigned int size)
{
unsigned int len;
- len = size + crypto_ahash_digestsize(ahash) +
- (crypto_ahash_alignmask(ahash) &
- ~(crypto_tfm_ctx_alignment() - 1));
+ len = size + crypto_ahash_digestsize(ahash);
len = ALIGN(len, crypto_tfm_ctx_alignment());
len += sizeof(struct ahash_request) + crypto_ahash_reqsize(ahash);
len = ALIGN(len, __alignof__(struct scatterlist));
len += sizeof(struct scatterlist) * nfrags;
return kmalloc(len, GFP_ATOMIC);
}
@@ -68,24 +66,23 @@ static void *ah_alloc_tmp(struct crypto_ahash *ahash, int nfrags,
static inline struct tmp_ext *ah_tmp_ext(void *base)
{
return base + IPV6HDR_BASELEN;
}
static inline u8 *ah_tmp_auth(u8 *tmp, unsigned int offset)
{
return tmp + offset;
}
-static inline u8 *ah_tmp_icv(struct crypto_ahash *ahash, void *tmp,
- unsigned int offset)
+static inline u8 *ah_tmp_icv(void *tmp, unsigned int offset)
{
- return PTR_ALIGN((u8 *)tmp + offset, crypto_ahash_alignmask(ahash) + 1);
+ return tmp + offset;
}
static inline struct ahash_request *ah_tmp_req(struct crypto_ahash *ahash,
u8 *icv)
{
struct ahash_request *req;
req = (void *)PTR_ALIGN(icv + crypto_ahash_digestsize(ahash),
crypto_tfm_ctx_alignment());
@@ -292,21 +289,21 @@ static void ah6_output_done(void *data, int err)
struct ipv6hdr *top_iph = ipv6_hdr(skb);
struct ip_auth_hdr *ah = ip_auth_hdr(skb);
struct tmp_ext *iph_ext;
extlen = skb_network_header_len(skb) - sizeof(struct ipv6hdr);
if (extlen)
extlen += sizeof(*iph_ext);
iph_base = AH_SKB_CB(skb)->tmp;
iph_ext = ah_tmp_ext(iph_base);
- icv = ah_tmp_icv(ahp->ahash, iph_ext, extlen);
+ icv = ah_tmp_icv(iph_ext, extlen);
memcpy(ah->auth_data, icv, ahp->icv_trunc_len);
memcpy(top_iph, iph_base, IPV6HDR_BASELEN);
if (extlen) {
#if IS_ENABLED(CONFIG_IPV6_MIP6)
memcpy(&top_iph->saddr, iph_ext, extlen);
#else
memcpy(&top_iph->daddr, iph_ext, extlen);
#endif
@@ -355,21 +352,21 @@ static int ah6_output(struct xfrm_state *x, struct sk_buff *skb)
seqhi_len = sizeof(*seqhi);
}
err = -ENOMEM;
iph_base = ah_alloc_tmp(ahash, nfrags + sglists, IPV6HDR_BASELEN +
extlen + seqhi_len);
if (!iph_base)
goto out;
iph_ext = ah_tmp_ext(iph_base);
seqhi = (__be32 *)((char *)iph_ext + extlen);
- icv = ah_tmp_icv(ahash, seqhi, seqhi_len);
+ icv = ah_tmp_icv(seqhi, seqhi_len);
req = ah_tmp_req(ahash, icv);
sg = ah_req_sg(ahash, req);
seqhisg = sg + nfrags;
ah = ip_auth_hdr(skb);
memset(ah->auth_data, 0, ahp->icv_trunc_len);
top_iph = ipv6_hdr(skb);
top_iph->payload_len = htons(skb->len - sizeof(*top_iph));
@@ -461,21 +458,21 @@ static void ah6_input_done(void *data, int err)
struct ah_data *ahp = x->data;
struct ip_auth_hdr *ah = ip_auth_hdr(skb);
int hdr_len = skb_network_header_len(skb);
int ah_hlen = ipv6_authlen(ah);
if (err)
goto out;
work_iph = AH_SKB_CB(skb)->tmp;
auth_data = ah_tmp_auth(work_iph, hdr_len);
- icv = ah_tmp_icv(ahp->ahash, auth_data, ahp->icv_trunc_len);
+ icv = ah_tmp_icv(auth_data, ahp->icv_trunc_len);
err = crypto_memneq(icv, auth_data, ahp->icv_trunc_len) ? -EBADMSG : 0;
if (err)
goto out;
err = ah->nexthdr;
skb->network_header += ah_hlen;
memcpy(skb_network_header(skb), work_iph, hdr_len);
__skb_pull(skb, ah_hlen + hdr_len);
@@ -569,21 +566,21 @@ static int ah6_input(struct xfrm_state *x, struct sk_buff *skb)
work_iph = ah_alloc_tmp(ahash, nfrags + sglists, hdr_len +
ahp->icv_trunc_len + seqhi_len);
if (!work_iph) {
err = -ENOMEM;
goto out;
}
auth_data = ah_tmp_auth((u8 *)work_iph, hdr_len);
seqhi = (__be32 *)(auth_data + ahp->icv_trunc_len);
- icv = ah_tmp_icv(ahash, seqhi, seqhi_len);
+ icv = ah_tmp_icv(seqhi, seqhi_len);
req = ah_tmp_req(ahash, icv);
sg = ah_req_sg(ahash, req);
seqhisg = sg + nfrags;
memcpy(work_iph, ip6h, hdr_len);
memcpy(auth_data, ah->auth_data, ahp->icv_trunc_len);
memset(ah->auth_data, 0, ahp->icv_trunc_len);
err = ipv6_clear_mutable_options(ip6h, hdr_len, XFRM_POLICY_IN);
if (err)
--
2.42.0
next prev parent reply other threads:[~2023-10-22 8:19 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-22 8:10 [PATCH 00/30] crypto: reduce ahash API overhead Eric Biggers
2023-10-22 8:10 ` [PATCH 01/30] crypto: shash - remove crypto_shash_ctx_aligned() Eric Biggers
2023-10-22 8:10 ` [PATCH 02/30] crypto: sun4i-ss - remove unnecessary alignmask for ahashes Eric Biggers
2023-10-25 13:15 ` Corentin Labbe
2023-10-22 8:10 ` [PATCH 03/30] crypto: sun8i-ce " Eric Biggers
2023-10-25 13:16 ` Corentin Labbe
2023-10-22 8:10 ` [PATCH 04/30] crypto: sun8i-ss " Eric Biggers
2023-10-25 13:16 ` Corentin Labbe
2023-10-22 8:10 ` [PATCH 05/30] crypto: atmel " Eric Biggers
2023-10-22 8:10 ` [PATCH 06/30] crypto: artpec6 - stop setting " Eric Biggers
2023-10-22 8:10 ` [PATCH 07/30] crypto: mxs-dcp - remove unnecessary " Eric Biggers
2023-10-22 8:10 ` [PATCH 08/30] crypto: s5p-sss " Eric Biggers
2023-10-22 8:10 ` [PATCH 09/30] crypto: talitos " Eric Biggers
2023-11-29 15:00 ` Christophe Leroy
2023-11-29 20:46 ` Eric Biggers
2023-10-22 8:10 ` [PATCH 10/30] crypto: omap-sham - stop setting " Eric Biggers
2023-10-22 8:10 ` [PATCH 11/30] crypto: rockchip - remove unnecessary " Eric Biggers
2023-10-22 8:10 ` [PATCH 12/30] crypto: starfive " Eric Biggers
2023-10-22 8:10 ` [PATCH 13/30] crypto: stm32 " Eric Biggers
2023-10-22 8:10 ` [PATCH 14/30] crypto: ahash - remove support for nonzero alignmask Eric Biggers
2023-10-22 8:10 ` [PATCH 15/30] crypto: authenc - stop using alignmask of ahash Eric Biggers
2023-10-22 8:10 ` [PATCH 16/30] crypto: authencesn " Eric Biggers
2023-10-22 8:10 ` [PATCH 17/30] crypto: testmgr - stop checking crypto_ahash_alignmask Eric Biggers
2023-10-22 8:10 ` [PATCH 18/30] net: ipv4: " Eric Biggers
2023-10-22 8:10 ` Eric Biggers [this message]
2023-10-22 8:10 ` [PATCH 20/30] crypto: ccm - stop using alignmask of ahash Eric Biggers
2023-10-22 8:10 ` [PATCH 21/30] crypto: chacha20poly1305 " Eric Biggers
2023-10-22 8:10 ` [PATCH 22/30] crypto: gcm " Eric Biggers
2023-10-22 8:10 ` [PATCH 23/30] crypto: ahash - remove crypto_ahash_alignmask Eric Biggers
2023-10-22 8:10 ` [PATCH 24/30] crypto: ahash - remove struct ahash_request_priv Eric Biggers
2023-10-22 8:10 ` [PATCH 25/30] crypto: ahash - improve file comment Eric Biggers
2023-10-22 8:10 ` [PATCH 26/30] crypto: chelsio - stop using crypto_ahash::init Eric Biggers
2023-10-22 8:10 ` [PATCH 27/30] crypto: talitos " Eric Biggers
2023-10-22 8:10 ` [PATCH 28/30] crypto: hash - move "ahash wrapping shash" functions to ahash.c Eric Biggers
2023-10-22 8:10 ` [PATCH 29/30] crypto: ahash - check for shash type instead of not ahash type Eric Biggers
2023-10-22 8:11 ` [PATCH 30/30] crypto: ahash - optimize performance when wrapping shash Eric Biggers
2023-10-27 10:56 ` [PATCH 00/30] crypto: reduce ahash API overhead Herbert Xu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231022081100.123613-20-ebiggers@kernel.org \
--to=ebiggers@kernel.org \
--cc=linux-crypto@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).