aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/sock.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/core/sock.c')
-rw-r--r--net/core/sock.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/net/core/sock.c b/net/core/sock.c
index 9e5b71fda6ec..2676a88f533e 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -1180,12 +1180,12 @@ void sock_update_classid(struct sock *sk)
1180} 1180}
1181EXPORT_SYMBOL(sock_update_classid); 1181EXPORT_SYMBOL(sock_update_classid);
1182 1182
1183void sock_update_netprioidx(struct sock *sk) 1183void sock_update_netprioidx(struct sock *sk, struct task_struct *task)
1184{ 1184{
1185 if (in_interrupt()) 1185 if (in_interrupt())
1186 return; 1186 return;
1187 1187
1188 sk->sk_cgrp_prioidx = task_netprioidx(current); 1188 sk->sk_cgrp_prioidx = task_netprioidx(task);
1189} 1189}
1190EXPORT_SYMBOL_GPL(sock_update_netprioidx); 1190EXPORT_SYMBOL_GPL(sock_update_netprioidx);
1191#endif 1191#endif
@@ -1215,7 +1215,7 @@ struct sock *sk_alloc(struct net *net, int family, gfp_t priority,
1215 atomic_set(&sk->sk_wmem_alloc, 1); 1215 atomic_set(&sk->sk_wmem_alloc, 1);
1216 1216
1217 sock_update_classid(sk); 1217 sock_update_classid(sk);
1218 sock_update_netprioidx(sk); 1218 sock_update_netprioidx(sk, current);
1219 } 1219 }
1220 1220
1221 return sk; 1221 return sk;
@@ -1465,6 +1465,11 @@ void sock_rfree(struct sk_buff *skb)
1465} 1465}
1466EXPORT_SYMBOL(sock_rfree); 1466EXPORT_SYMBOL(sock_rfree);
1467 1467
1468void sock_edemux(struct sk_buff *skb)
1469{
1470 sock_put(skb->sk);
1471}
1472EXPORT_SYMBOL(sock_edemux);
1468 1473
1469int sock_i_uid(struct sock *sk) 1474int sock_i_uid(struct sock *sk)
1470{ 1475{
@@ -2154,6 +2159,10 @@ void release_sock(struct sock *sk)
2154 spin_lock_bh(&sk->sk_lock.slock); 2159 spin_lock_bh(&sk->sk_lock.slock);
2155 if (sk->sk_backlog.tail) 2160 if (sk->sk_backlog.tail)
2156 __release_sock(sk); 2161 __release_sock(sk);
2162
2163 if (sk->sk_prot->release_cb)
2164 sk->sk_prot->release_cb(sk);
2165
2157 sk->sk_lock.owned = 0; 2166 sk->sk_lock.owned = 0;
2158 if (waitqueue_active(&sk->sk_lock.wq)) 2167 if (waitqueue_active(&sk->sk_lock.wq))
2159 wake_up(&sk->sk_lock.wq); 2168 wake_up(&sk->sk_lock.wq);