aboutsummaryrefslogtreecommitdiffstats
path: root/net/core
diff options
context:
space:
mode:
authorPavel Emelyanov <xemul@openvz.org>2007-10-18 00:21:51 -0400
committerDavid S. Miller <davem@davemloft.net>2007-10-18 00:21:51 -0400
commit309dd5fc872448e35634d510049642312ebc170d (patch)
tree5284d7b48980482ecba06b760ac16d9f94e66ea9 /net/core
parent55b333253d5bcafbe187b50474e40789301c53c6 (diff)
[NET]: Move the filter releasing into a separate call
This is done merely as a preparation for the fix. The sk_filter_uncharge() unaccounts the filter memory and calls the sk_filter_release(), which in turn decrements the refcount anf frees the filter. The latter function will be required separately. Signed-off-by: Pavel Emelyanov <xemul@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core')
-rw-r--r--net/core/filter.c4
-rw-r--r--net/core/sock.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/net/core/filter.c b/net/core/filter.c
index fd607581ab50..2be1830d3c35 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -429,7 +429,7 @@ int sk_attach_filter(struct sock_fprog *fprog, struct sock *sk)
429 } 429 }
430 430
431 if (fp) 431 if (fp)
432 sk_filter_release(sk, fp); 432 sk_filter_uncharge(sk, fp);
433 return err; 433 return err;
434} 434}
435 435
@@ -442,7 +442,7 @@ int sk_detach_filter(struct sock *sk)
442 filter = rcu_dereference(sk->sk_filter); 442 filter = rcu_dereference(sk->sk_filter);
443 if (filter) { 443 if (filter) {
444 rcu_assign_pointer(sk->sk_filter, NULL); 444 rcu_assign_pointer(sk->sk_filter, NULL);
445 sk_filter_release(sk, filter); 445 sk_filter_uncharge(sk, filter);
446 ret = 0; 446 ret = 0;
447 } 447 }
448 rcu_read_unlock_bh(); 448 rcu_read_unlock_bh();
diff --git a/net/core/sock.c b/net/core/sock.c
index 07101381b8b7..d292b4113d6e 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -915,7 +915,7 @@ void sk_free(struct sock *sk)
915 915
916 filter = rcu_dereference(sk->sk_filter); 916 filter = rcu_dereference(sk->sk_filter);
917 if (filter) { 917 if (filter) {
918 sk_filter_release(sk, filter); 918 sk_filter_uncharge(sk, filter);
919 rcu_assign_pointer(sk->sk_filter, NULL); 919 rcu_assign_pointer(sk->sk_filter, NULL);
920 } 920 }
921 921