diff options
-rw-r--r-- | include/linux/netfilter_ipv4/ip_conntrack_core.h | 2 | ||||
-rw-r--r-- | net/ipv4/netfilter/ip_conntrack_core.c | 20 | ||||
-rw-r--r-- | net/ipv4/netfilter/ip_conntrack_netlink.c | 12 | ||||
-rw-r--r-- | net/ipv4/netfilter/ip_conntrack_standalone.c | 2 |
4 files changed, 17 insertions, 19 deletions
diff --git a/include/linux/netfilter_ipv4/ip_conntrack_core.h b/include/linux/netfilter_ipv4/ip_conntrack_core.h index dc4d2a0575de..907d4f5ca5dc 100644 --- a/include/linux/netfilter_ipv4/ip_conntrack_core.h +++ b/include/linux/netfilter_ipv4/ip_conntrack_core.h | |||
@@ -52,7 +52,7 @@ static inline int ip_conntrack_confirm(struct sk_buff **pskb) | |||
52 | return ret; | 52 | return ret; |
53 | } | 53 | } |
54 | 54 | ||
55 | extern void __ip_ct_expect_unlink_destroy(struct ip_conntrack_expect *exp); | 55 | extern void ip_ct_unlink_expect(struct ip_conntrack_expect *exp); |
56 | 56 | ||
57 | extern struct list_head *ip_conntrack_hash; | 57 | extern struct list_head *ip_conntrack_hash; |
58 | extern struct list_head ip_conntrack_expect_list; | 58 | extern struct list_head ip_conntrack_expect_list; |
diff --git a/net/ipv4/netfilter/ip_conntrack_core.c b/net/ipv4/netfilter/ip_conntrack_core.c index babce304c619..19cba16e6e1e 100644 --- a/net/ipv4/netfilter/ip_conntrack_core.c +++ b/net/ipv4/netfilter/ip_conntrack_core.c | |||
@@ -197,7 +197,7 @@ ip_ct_invert_tuple(struct ip_conntrack_tuple *inverse, | |||
197 | 197 | ||
198 | 198 | ||
199 | /* ip_conntrack_expect helper functions */ | 199 | /* ip_conntrack_expect helper functions */ |
200 | static void unlink_expect(struct ip_conntrack_expect *exp) | 200 | void ip_ct_unlink_expect(struct ip_conntrack_expect *exp) |
201 | { | 201 | { |
202 | ASSERT_WRITE_LOCK(&ip_conntrack_lock); | 202 | ASSERT_WRITE_LOCK(&ip_conntrack_lock); |
203 | IP_NF_ASSERT(!timer_pending(&exp->timeout)); | 203 | IP_NF_ASSERT(!timer_pending(&exp->timeout)); |
@@ -207,18 +207,12 @@ static void unlink_expect(struct ip_conntrack_expect *exp) | |||
207 | ip_conntrack_expect_put(exp); | 207 | ip_conntrack_expect_put(exp); |
208 | } | 208 | } |
209 | 209 | ||
210 | void __ip_ct_expect_unlink_destroy(struct ip_conntrack_expect *exp) | ||
211 | { | ||
212 | unlink_expect(exp); | ||
213 | ip_conntrack_expect_put(exp); | ||
214 | } | ||
215 | |||
216 | static void expectation_timed_out(unsigned long ul_expect) | 210 | static void expectation_timed_out(unsigned long ul_expect) |
217 | { | 211 | { |
218 | struct ip_conntrack_expect *exp = (void *)ul_expect; | 212 | struct ip_conntrack_expect *exp = (void *)ul_expect; |
219 | 213 | ||
220 | write_lock_bh(&ip_conntrack_lock); | 214 | write_lock_bh(&ip_conntrack_lock); |
221 | unlink_expect(exp); | 215 | ip_ct_unlink_expect(exp); |
222 | write_unlock_bh(&ip_conntrack_lock); | 216 | write_unlock_bh(&ip_conntrack_lock); |
223 | ip_conntrack_expect_put(exp); | 217 | ip_conntrack_expect_put(exp); |
224 | } | 218 | } |
@@ -269,7 +263,7 @@ find_expectation(const struct ip_conntrack_tuple *tuple) | |||
269 | atomic_inc(&i->use); | 263 | atomic_inc(&i->use); |
270 | return i; | 264 | return i; |
271 | } else if (del_timer(&i->timeout)) { | 265 | } else if (del_timer(&i->timeout)) { |
272 | unlink_expect(i); | 266 | ip_ct_unlink_expect(i); |
273 | return i; | 267 | return i; |
274 | } | 268 | } |
275 | } | 269 | } |
@@ -288,7 +282,7 @@ void ip_ct_remove_expectations(struct ip_conntrack *ct) | |||
288 | 282 | ||
289 | list_for_each_entry_safe(i, tmp, &ip_conntrack_expect_list, list) { | 283 | list_for_each_entry_safe(i, tmp, &ip_conntrack_expect_list, list) { |
290 | if (i->master == ct && del_timer(&i->timeout)) { | 284 | if (i->master == ct && del_timer(&i->timeout)) { |
291 | unlink_expect(i); | 285 | ip_ct_unlink_expect(i); |
292 | ip_conntrack_expect_put(i); | 286 | ip_conntrack_expect_put(i); |
293 | } | 287 | } |
294 | } | 288 | } |
@@ -929,7 +923,7 @@ void ip_conntrack_unexpect_related(struct ip_conntrack_expect *exp) | |||
929 | /* choose the the oldest expectation to evict */ | 923 | /* choose the the oldest expectation to evict */ |
930 | list_for_each_entry_reverse(i, &ip_conntrack_expect_list, list) { | 924 | list_for_each_entry_reverse(i, &ip_conntrack_expect_list, list) { |
931 | if (expect_matches(i, exp) && del_timer(&i->timeout)) { | 925 | if (expect_matches(i, exp) && del_timer(&i->timeout)) { |
932 | unlink_expect(i); | 926 | ip_ct_unlink_expect(i); |
933 | write_unlock_bh(&ip_conntrack_lock); | 927 | write_unlock_bh(&ip_conntrack_lock); |
934 | ip_conntrack_expect_put(i); | 928 | ip_conntrack_expect_put(i); |
935 | return; | 929 | return; |
@@ -986,7 +980,7 @@ static void evict_oldest_expect(struct ip_conntrack *master) | |||
986 | list_for_each_entry_reverse(i, &ip_conntrack_expect_list, list) { | 980 | list_for_each_entry_reverse(i, &ip_conntrack_expect_list, list) { |
987 | if (i->master == master) { | 981 | if (i->master == master) { |
988 | if (del_timer(&i->timeout)) { | 982 | if (del_timer(&i->timeout)) { |
989 | unlink_expect(i); | 983 | ip_ct_unlink_expect(i); |
990 | ip_conntrack_expect_put(i); | 984 | ip_conntrack_expect_put(i); |
991 | } | 985 | } |
992 | break; | 986 | break; |
@@ -1103,7 +1097,7 @@ void ip_conntrack_helper_unregister(struct ip_conntrack_helper *me) | |||
1103 | /* Get rid of expectations */ | 1097 | /* Get rid of expectations */ |
1104 | list_for_each_entry_safe(exp, tmp, &ip_conntrack_expect_list, list) { | 1098 | list_for_each_entry_safe(exp, tmp, &ip_conntrack_expect_list, list) { |
1105 | if (exp->master->helper == me && del_timer(&exp->timeout)) { | 1099 | if (exp->master->helper == me && del_timer(&exp->timeout)) { |
1106 | unlink_expect(exp); | 1100 | ip_ct_unlink_expect(exp); |
1107 | ip_conntrack_expect_put(exp); | 1101 | ip_conntrack_expect_put(exp); |
1108 | } | 1102 | } |
1109 | } | 1103 | } |
diff --git a/net/ipv4/netfilter/ip_conntrack_netlink.c b/net/ipv4/netfilter/ip_conntrack_netlink.c index 3dc3a7bab3b4..15aef3564742 100644 --- a/net/ipv4/netfilter/ip_conntrack_netlink.c +++ b/net/ipv4/netfilter/ip_conntrack_netlink.c | |||
@@ -1349,8 +1349,10 @@ ctnetlink_del_expect(struct sock *ctnl, struct sk_buff *skb, | |||
1349 | list_for_each_entry_safe(exp, tmp, &ip_conntrack_expect_list, | 1349 | list_for_each_entry_safe(exp, tmp, &ip_conntrack_expect_list, |
1350 | list) { | 1350 | list) { |
1351 | if (exp->master->helper == h | 1351 | if (exp->master->helper == h |
1352 | && del_timer(&exp->timeout)) | 1352 | && del_timer(&exp->timeout)) { |
1353 | __ip_ct_expect_unlink_destroy(exp); | 1353 | ip_ct_unlink_expect(exp); |
1354 | ip_conntrack_expect_put(exp); | ||
1355 | } | ||
1354 | } | 1356 | } |
1355 | write_unlock(&ip_conntrack_lock); | 1357 | write_unlock(&ip_conntrack_lock); |
1356 | } else { | 1358 | } else { |
@@ -1358,8 +1360,10 @@ ctnetlink_del_expect(struct sock *ctnl, struct sk_buff *skb, | |||
1358 | write_lock_bh(&ip_conntrack_lock); | 1360 | write_lock_bh(&ip_conntrack_lock); |
1359 | list_for_each_entry_safe(exp, tmp, &ip_conntrack_expect_list, | 1361 | list_for_each_entry_safe(exp, tmp, &ip_conntrack_expect_list, |
1360 | list) { | 1362 | list) { |
1361 | if (del_timer(&exp->timeout)) | 1363 | if (del_timer(&exp->timeout)) { |
1362 | __ip_ct_expect_unlink_destroy(exp); | 1364 | ip_ct_unlink_expect(exp); |
1365 | ip_conntrack_expect_put(exp); | ||
1366 | } | ||
1363 | } | 1367 | } |
1364 | write_unlock_bh(&ip_conntrack_lock); | 1368 | write_unlock_bh(&ip_conntrack_lock); |
1365 | } | 1369 | } |
diff --git a/net/ipv4/netfilter/ip_conntrack_standalone.c b/net/ipv4/netfilter/ip_conntrack_standalone.c index ee5895afd0c3..ae3e3e655db5 100644 --- a/net/ipv4/netfilter/ip_conntrack_standalone.c +++ b/net/ipv4/netfilter/ip_conntrack_standalone.c | |||
@@ -998,7 +998,7 @@ EXPORT_SYMBOL(ip_conntrack_expect_related); | |||
998 | EXPORT_SYMBOL(ip_conntrack_unexpect_related); | 998 | EXPORT_SYMBOL(ip_conntrack_unexpect_related); |
999 | EXPORT_SYMBOL_GPL(ip_conntrack_expect_list); | 999 | EXPORT_SYMBOL_GPL(ip_conntrack_expect_list); |
1000 | EXPORT_SYMBOL_GPL(__ip_conntrack_expect_find); | 1000 | EXPORT_SYMBOL_GPL(__ip_conntrack_expect_find); |
1001 | EXPORT_SYMBOL_GPL(__ip_ct_expect_unlink_destroy); | 1001 | EXPORT_SYMBOL_GPL(ip_ct_unlink_expect); |
1002 | 1002 | ||
1003 | EXPORT_SYMBOL(ip_conntrack_tuple_taken); | 1003 | EXPORT_SYMBOL(ip_conntrack_tuple_taken); |
1004 | EXPORT_SYMBOL(ip_ct_gather_frags); | 1004 | EXPORT_SYMBOL(ip_ct_gather_frags); |