Эх сурвалжийг харах

[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 жил өмнө
parent
commit
210a9ebef2

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

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

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

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