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

From: Eric Dumazet
Date: Mon Sep 25 2023 - 00:36:20 EST


On Fri, Sep 22, 2023 at 11:04 PM 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>
> ---

Nica catch, thanks a lot.

Reviewed-by: Eric Dumazet <edumazet@xxxxxxxxxx>