From: Steffen Klassert <steffen.klassert@secunet.com>
To: Michael Bommarito <michael.bommarito@gmail.com>
Cc: Herbert Xu <herbert@gondor.apana.org.au>,
<netdev@vger.kernel.org>,
"David S . Miller" <davem@davemloft.net>,
David Ahern <dsahern@kernel.org>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Simon Horman <horms@kernel.org>, Fan Du <fan.du@windriver.com>,
<linux-kernel@vger.kernel.org>, <stable@vger.kernel.org>
Subject: Re: [PATCH] xfrm: ah: account for ESN high bits in async callbacks
Date: Tue, 21 Apr 2026 15:31:26 +0200 [thread overview]
Message-ID: <aed8Lsf0DSAPX1E9@secunet.com> (raw)
In-Reply-To: <20260419223542.2293727-1-michael.bommarito@gmail.com>
On Sun, Apr 19, 2026 at 06:35:42PM -0400, Michael Bommarito wrote:
> AH allocates its temporary auth/ICV layout differently when ESN is enabled:
> the async ahash setup appends a 4-byte seqhi slot before the ICV or
> auth_data area, but the async completion callbacks still reconstruct the
> temporary layout as if seqhi were absent.
>
> With an async AH implementation selected, that makes AH copy or compare
> the wrong bytes on both the IPv4 and IPv6 paths. In UML repro on IPv4 AH
> with ESN and forced async hmac(sha1), ping fails with 100% packet loss,
> and the callback logs show the pre-fix drift:
>
> ah4 output_done: esn=1 err=0 icv_off=20 expected_off=24
> ah4 input_done: esn=1 auth_off=20 expected_auth_off=24 icv_off=32 expected_icv_off=36
>
> Reconstruct the callback-side layout the same way the setup path built it
> by skipping the ESN seqhi slot before locating the saved auth_data or ICV.
> Per RFC 4302, the ESN high-order 32 bits participate in the AH ICV
> computation, so the async callbacks must account for the seqhi slot.
>
> Post-fix, the same IPv4 AH+ESN+forced-async-hmac(sha1) UML repro shows
> the corrected offset (ah4 output_done: esn=1 err=0 icv_off=24
> expected_off=24) and ping succeeds; net/ipv4/ah4.o and net/ipv6/ah6.o
> build clean at W=1. IPv6 AH+ESN was not exercised at runtime, and the
> change has not been tested against a real async hardware AH engine.
>
> Fixes: d4d573d0334d ("{IPv4,xfrm} Add ESN support for AH egress part")
> Fixes: d8b2a8600b0e ("{IPv4,xfrm} Add ESN support for AH ingress part")
> Fixes: 26dd70c3fad3 ("{IPv6,xfrm} Add ESN support for AH egress part")
> Fixes: 8d6da6f32557 ("{IPv6,xfrm} Add ESN support for AH ingress part")
> Cc: stable@vger.kernel.org
> Assisted-by: Codex:gpt-5-4
> Assisted-by: Claude:claude-opus-4-7
> Signed-off-by: Michael Bommarito <michael.bommarito@gmail.com>
Applied to the ipsec tree, thanks a lot Michael!
prev parent reply other threads:[~2026-04-21 13:31 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-19 22:35 [PATCH] xfrm: ah: account for ESN high bits in async callbacks Michael Bommarito
2026-04-21 13:31 ` Steffen Klassert [this message]
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=aed8Lsf0DSAPX1E9@secunet.com \
--to=steffen.klassert@secunet.com \
--cc=davem@davemloft.net \
--cc=dsahern@kernel.org \
--cc=edumazet@google.com \
--cc=fan.du@windriver.com \
--cc=herbert@gondor.apana.org.au \
--cc=horms@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=michael.bommarito@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=stable@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.