mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
[NETLINK]: Defer socket destruction a bit
In netlink_broadcast() we're sending shared skb's to netlink listeners when possible (saves some copying). This is OK, since we hold the only other reference to the skb. However, this implies that we must drop our reference on the skb, before allowing a receiving socket to disappear. Otherwise, the socket buffer accounting is disrupted. Signed-off-by: Tommy S. Christensen <[email protected]> Acked-by: Herbert Xu <[email protected]> Signed-off-by: David S. Miller <[email protected]>
This commit is contained in:
parent
68acc024ea
commit
aa1c6a6f7f
1 changed files with 2 additions and 1 deletions
|
|
@ -789,11 +789,12 @@ int netlink_broadcast(struct sock *ssk, struct sk_buff *skb, u32 pid,
|
|||
sk_for_each_bound(sk, node, &nl_table[ssk->sk_protocol].mc_list)
|
||||
do_one_broadcast(sk, &info);
|
||||
|
||||
kfree_skb(skb);
|
||||
|
||||
netlink_unlock_table();
|
||||
|
||||
if (info.skb2)
|
||||
kfree_skb(info.skb2);
|
||||
kfree_skb(skb);
|
||||
|
||||
if (info.delivered) {
|
||||
if (info.congested && (allocation & __GFP_WAIT))
|
||||
|
|
|
|||
Loading…
Reference in a new issue