diff options
| author | 2011-07-27 00:54:47 -0700 | |
|---|---|---|
| committer | 2011-07-27 00:54:47 -0700 | |
| commit | aa7eb8e78d8ecd6cd0475d86ea8385ff9cb47ece (patch) | |
| tree | 3f9e98fadd5124fb05e8f6f9b06aa23698d4f215 /net/core/skbuff.c | |
| parent | Input: sh_keysc - fix compile warning (diff) | |
| parent | Input: synaptics - fix reporting of min coordinates (diff) | |
| download | wireguard-linux-aa7eb8e78d8ecd6cd0475d86ea8385ff9cb47ece.tar.xz wireguard-linux-aa7eb8e78d8ecd6cd0475d86ea8385ff9cb47ece.zip | |
Merge branch 'next' into for-linus
Diffstat (limited to 'net/core/skbuff.c')
| -rw-r--r-- | net/core/skbuff.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 7ebeed0a877c..46cbd28f40f9 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -57,6 +57,7 @@ #include <linux/init.h> #include <linux/scatterlist.h> #include <linux/errqueue.h> +#include <linux/prefetch.h> #include <net/protocol.h> #include <net/dst.h> @@ -2993,6 +2994,9 @@ int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb) skb->destructor = sock_rmem_free; atomic_add(skb->truesize, &sk->sk_rmem_alloc); + /* before exiting rcu section, make sure dst is refcounted */ + skb_dst_force(skb); + skb_queue_tail(&sk->sk_error_queue, skb); if (!sock_flag(sk, SOCK_DEAD)) sk->sk_data_ready(sk, skb->len); |
