Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 020f6cc5 authored by Florian Westphal's avatar Florian Westphal Committed by Pablo Neira Ayuso
Browse files

netfilter: conntrack: avoid use-after free on rmmod



When the conntrack module is removed, we call nf_ct_iterate_destroy via
nf_ct_l4proto_unregister().

Problem is that nf_conntrack_proto_fini() gets called after the
conntrack hash table has already been freed.

Just remove the l4proto unregister call, its unecessary as the
nf_ct_protos[] array gets free'd right after anyway.

v2: add comment wrt. missing unreg call.

Fixes: a0ae2562 ("netfilter: conntrack: remove l3proto abstraction")
Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
parent 7bdfcea8
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -940,14 +940,13 @@ void nf_conntrack_proto_fini(void)
{
	unsigned int i;

	nf_ct_l4proto_unregister(builtin_l4proto,
				 ARRAY_SIZE(builtin_l4proto));
	nf_unregister_sockopt(&so_getorigdst);
#if IS_ENABLED(CONFIG_IPV6)
	nf_unregister_sockopt(&so_getorigdst6);
#endif

	/* free l3proto protocol tables */
	/* No need to call nf_ct_l4proto_unregister(), the register
	 * tables are free'd here anyway.
	 */
	for (i = 0; i < ARRAY_SIZE(nf_ct_protos); i++)
		kfree(nf_ct_protos[i]);
}