Message ID | 20250324061855.4116819-2-steffen.klassert@secunet.com (mailing list archive) |
---|---|
State | Accepted |
Commit | e3aa43a50a6455831e3c32dabc7ece38d9cd9d05 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [1/8] xfrm: prevent high SEQ input in non-ESN mode | expand |
Hello: This series was applied to netdev/net-next.git (main) by Steffen Klassert <steffen.klassert@secunet.com>: On Mon, 24 Mar 2025 07:18:48 +0100 you wrote: > From: Leon Romanovsky <leonro@nvidia.com> > > In non-ESN mode, the SEQ numbers are limited to 32 bits and seq_hi/oseq_hi > are not used. So make sure that user gets proper error message, in case > such assignment occurred. > > Signed-off-by: Leon Romanovsky <leonro@nvidia.com> > Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com> > > [...] Here is the summary with links: - [1/8] xfrm: prevent high SEQ input in non-ESN mode https://git.kernel.org/netdev/net-next/c/e3aa43a50a64 - [2/8] xfrm: delay initialization of offload path till its actually requested https://git.kernel.org/netdev/net-next/c/585b64f5a620 - [3/8] xfrm: simplify SA initialization routine https://git.kernel.org/netdev/net-next/c/b6ccf61aa4fd - [4/8] xfrm: rely on XFRM offload https://git.kernel.org/netdev/net-next/c/49431af6c4ef - [5/8] xfrm: provide common xdo_dev_offload_ok callback implementation https://git.kernel.org/netdev/net-next/c/cc18f482e8b6 - [6/8] xfrm: check for PMTU in tunnel mode for packet offload https://git.kernel.org/netdev/net-next/c/ca70c104e151 - [7/8] xfrm: state: make xfrm_state_lookup_byaddr lockless https://git.kernel.org/netdev/net-next/c/2e460eefbd44 - [8/8] xfrm: Remove unnecessary NULL check in xfrm_lookup_with_ifid() https://git.kernel.org/netdev/net-next/c/399e0aae5aab You are awesome, thank you!
diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c index 08c6d6f0179f..5877eabe9d95 100644 --- a/net/xfrm/xfrm_user.c +++ b/net/xfrm/xfrm_user.c @@ -178,6 +178,12 @@ static inline int verify_replay(struct xfrm_usersa_info *p, "Replay seq and seq_hi should be 0 for output SA"); return -EINVAL; } + if (rs->oseq_hi && !(p->flags & XFRM_STATE_ESN)) { + NL_SET_ERR_MSG( + extack, + "Replay oseq_hi should be 0 in non-ESN mode for output SA"); + return -EINVAL; + } if (rs->bmp_len) { NL_SET_ERR_MSG(extack, "Replay bmp_len should 0 for output SA"); return -EINVAL; @@ -190,6 +196,12 @@ static inline int verify_replay(struct xfrm_usersa_info *p, "Replay oseq and oseq_hi should be 0 for input SA"); return -EINVAL; } + if (rs->seq_hi && !(p->flags & XFRM_STATE_ESN)) { + NL_SET_ERR_MSG( + extack, + "Replay seq_hi should be 0 in non-ESN mode for input SA"); + return -EINVAL; + } } return 0;