فهرست منبع

[NETFILTER]: ip_ct_proto_gre_fini() cannot be __exit

It is invoked from failures paths of __init code.

Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller 19 سال پیش
والد
کامیت
a776809755
2فایلهای تغییر یافته به همراه5 افزوده شده و 2 حذف شده
  1. 1 1
      net/ipv4/netfilter/ip_conntrack_helper_pptp.c
  2. 4 1
      net/ipv4/netfilter/ip_conntrack_proto_gre.c

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

@@ -762,7 +762,7 @@ static struct ip_conntrack_helper pptp = {
 	.help = conntrack_pptp_help
 	.help = conntrack_pptp_help
 };
 };
 
 
-extern void __exit ip_ct_proto_gre_fini(void);
+extern void ip_ct_proto_gre_fini(void);
 extern int __init ip_ct_proto_gre_init(void);
 extern int __init ip_ct_proto_gre_init(void);
 
 
 /* ip_conntrack_pptp initialization */
 /* ip_conntrack_pptp initialization */

+ 4 - 1
net/ipv4/netfilter/ip_conntrack_proto_gre.c

@@ -309,7 +309,10 @@ int __init ip_ct_proto_gre_init(void)
 	return ip_conntrack_protocol_register(&gre);
 	return ip_conntrack_protocol_register(&gre);
 }
 }
 
 
-void __exit ip_ct_proto_gre_fini(void)
+/* This cannot be __exit, as it is invoked from ip_conntrack_helper_pptp.c's
+ * init() code on errors.
+ */
+void ip_ct_proto_gre_fini(void)
 {
 {
 	struct list_head *pos, *n;
 	struct list_head *pos, *n;