|
@@ -1442,6 +1442,11 @@ static void __sk_destruct(struct rcu_head *head)
|
|
pr_debug("%s: optmem leakage (%d bytes) detected\n",
|
|
pr_debug("%s: optmem leakage (%d bytes) detected\n",
|
|
__func__, atomic_read(&sk->sk_omem_alloc));
|
|
__func__, atomic_read(&sk->sk_omem_alloc));
|
|
|
|
|
|
|
|
+ if (sk->sk_frag.page) {
|
|
|
|
+ put_page(sk->sk_frag.page);
|
|
|
|
+ sk->sk_frag.page = NULL;
|
|
|
|
+ }
|
|
|
|
+
|
|
if (sk->sk_peer_cred)
|
|
if (sk->sk_peer_cred)
|
|
put_cred(sk->sk_peer_cred);
|
|
put_cred(sk->sk_peer_cred);
|
|
put_pid(sk->sk_peer_pid);
|
|
put_pid(sk->sk_peer_pid);
|
|
@@ -2787,11 +2792,6 @@ void sk_common_release(struct sock *sk)
|
|
|
|
|
|
sk_refcnt_debug_release(sk);
|
|
sk_refcnt_debug_release(sk);
|
|
|
|
|
|
- if (sk->sk_frag.page) {
|
|
|
|
- put_page(sk->sk_frag.page);
|
|
|
|
- sk->sk_frag.page = NULL;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
sock_put(sk);
|
|
sock_put(sk);
|
|
}
|
|
}
|
|
EXPORT_SYMBOL(sk_common_release);
|
|
EXPORT_SYMBOL(sk_common_release);
|