Re: [PATCH net] ipv6: tcp: add a missing nf_reset_ct() in 3WHS handling

From: Florian Westphal
Date: Fri Sep 22 2023 - 19:56:25 EST


Ilya Maximets <i.maximets@xxxxxxx> wrote:
> Commit b0e214d21203 ("netfilter: keep conntrack reference until
> IPsecv6 policy checks are done") is a direct copy of the old
> commit b59c270104f0 ("[NETFILTER]: Keep conntrack reference until
> IPsec policy checks are done") but for IPv6. However, it also
> copies a bug that this old commit had. That is: when the third
> packet of 3WHS connection establishment contains payload, it is
> added into socket receive queue without the XFRM check and the
> drop of connection tracking context.
>
> That leads to nf_conntrack module being impossible to unload as
> it waits for all the conntrack references to be dropped while
> the packet release is deferred in per-cpu cache indefinitely, if
> not consumed by the application.
>
> The issue for IPv4 was fixed in commit 6f0012e35160 ("tcp: add a
> missing nf_reset_ct() in 3WHS handling") by adding a missing XFRM
> check and correctly dropping the conntrack context. However, the
> issue was introduced to IPv6 code afterwards. Fixing it the
> same way for IPv6 now.
>
> Fixes: b0e214d21203 ("netfilter: keep conntrack reference until IPsecv6 policy checks are done")
> Link: https://lore.kernel.org/netdev/d589a999-d4dd-2768-b2d5-89dec64a4a42@xxxxxxx/
> Signed-off-by: Ilya Maximets <i.maximets@xxxxxxx>
> ---
> net/ipv6/tcp_ipv6.c | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>

LGTM, thanks for tracking this down.

Acked-by: Florian Westphal <fw@xxxxxxxxx>