Browse Source

[NETFILTER]: ip{6}_queue: prevent unregistration race with nfnetlink_queue

Since nfnetlink_queue can override ip{6}_queue as queue handlers, we
can no longer blindly unregister whoever is registered for PF_INET[6],
but only unregister ourselves.

Signed-off-by: Harald Welte <laforge@netfilter.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Harald Welte 20 years ago
parent
commit
210a9ebef2
2 changed files with 2 additions and 2 deletions
  1. 1 1
      net/ipv4/netfilter/ip_queue.c
  2. 1 1
      net/ipv6/netfilter/ip6_queue.c

+ 1 - 1
net/ipv4/netfilter/ip_queue.c

@@ -692,7 +692,7 @@ init_or_cleanup(int init)
 	return status;
 
 cleanup:
-	nf_unregister_queue_handler(PF_INET);
+	nf_unregister_queue_handlers(&ipq_enqueue_packet);
 	synchronize_net();
 	ipq_flush(NF_DROP);
 	

+ 1 - 1
net/ipv6/netfilter/ip6_queue.c

@@ -687,7 +687,7 @@ init_or_cleanup(int init)
 	return status;
 
 cleanup:
-	nf_unregister_queue_handler(PF_INET6);
+	nf_unregister_queue_handlers(&ipq_enqueue_packet);
 	synchronize_net();
 	ipq_flush(NF_DROP);