mirror of https://gitee.com/openkylin/linux.git
net: release skb->dst in sock_queue_rcv_skb()
When queuing a skb to sk->sk_receive_queue, we can release its dst, not anymore needed. Since current cpu did the dst_hold(), refcount is probably still hot int this cpu caches. This avoids readers to access the original dst to decrement its refcount, possibly a long time after packet reception. This should speedup UDP and RAW receive path. Signed-off-by: Eric Dumazet <dada1@cosmosbay.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
dd24c00191
commit
7035560287
|
@ -289,7 +289,11 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
|
|||
|
||||
skb->dev = NULL;
|
||||
skb_set_owner_r(skb, sk);
|
||||
|
||||
/*
|
||||
* release dst right now while its hot
|
||||
*/
|
||||
dst_release(skb->dst);
|
||||
skb->dst = NULL;
|
||||
/* Cache the SKB length before we tack it onto the receive
|
||||
* queue. Once it is added it no longer belongs to us and
|
||||
* may be freed by other threads of control pulling packets
|
||||
|
|
Loading…
Reference in New Issue