Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 369319
b: refs/heads/master
c: cf0a018
h: refs/heads/master
i:
  369317: 25de487
  369315: 42702a5
  369311: 929a7ef
v: v3
  • Loading branch information
Patrick McHardy authored and David S. Miller committed Apr 19, 2013
1 parent 294d195 commit decd9d1
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 1298ca4671acb10310baa550ed044c553e3a3387
refs/heads/master: cf0a018ac669955c10e4fca24fa55dde58434e9a
20 changes: 17 additions & 3 deletions trunk/net/netlink/af_netlink.c
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,20 @@ static void netlink_consume_callback(struct netlink_callback *cb)
kfree(cb);
}

static void netlink_skb_destructor(struct sk_buff *skb)
{
sock_rfree(skb);
}

static void netlink_skb_set_owner_r(struct sk_buff *skb, struct sock *sk)
{
WARN_ON(skb->sk != NULL);
skb->sk = sk;
skb->destructor = netlink_skb_destructor;
atomic_add(skb->truesize, &sk->sk_rmem_alloc);
sk_mem_charge(sk, skb->truesize);
}

static void netlink_sock_destruct(struct sock *sk)
{
struct netlink_sock *nlk = nlk_sk(sk);
Expand Down Expand Up @@ -820,7 +834,7 @@ int netlink_attachskb(struct sock *sk, struct sk_buff *skb,
}
return 1;
}
skb_set_owner_r(skb, sk);
netlink_skb_set_owner_r(skb, sk);
return 0;
}

Expand Down Expand Up @@ -890,7 +904,7 @@ static int netlink_unicast_kernel(struct sock *sk, struct sk_buff *skb,
ret = -ECONNREFUSED;
if (nlk->netlink_rcv != NULL) {
ret = skb->len;
skb_set_owner_r(skb, sk);
netlink_skb_set_owner_r(skb, sk);
NETLINK_CB(skb).sk = ssk;
nlk->netlink_rcv(skb);
consume_skb(skb);
Expand Down Expand Up @@ -962,7 +976,7 @@ static int netlink_broadcast_deliver(struct sock *sk, struct sk_buff *skb)

if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf &&
!test_bit(NETLINK_CONGESTED, &nlk->state)) {
skb_set_owner_r(skb, sk);
netlink_skb_set_owner_r(skb, sk);
__netlink_sendskb(sk, skb);
return atomic_read(&sk->sk_rmem_alloc) > (sk->sk_rcvbuf >> 1);
}
Expand Down

0 comments on commit decd9d1

Please sign in to comment.