summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2017-03-20 21:23:48 -0700
committerBen Hutchings <ben@decadent.org.uk>2017-04-04 22:18:32 +0100
commit6892986c7db05c281322f1f8870f5a46d4080e99 (patch)
tree7dc84f45e4e0bc9d76fef6171062a2f0f3384f1a
parenta5d34b6e04704131e0437a8ef995ed716b75b9a0 (diff)
ipv4: keep skb->dst around in presence of IP options
Upstream commit 34b2cef20f19c87999fff3da4071e66937db9644 ("ipv4: keep skb->dst around in presence of IP options") incorrectly root caused commit d826eb14ecef ("ipv4: PKTINFO doesnt need dst reference") as bug origin. This patch should fix the issue for 3.2.xx stable kernels, since IPv4 options seem to get more traction these days, after years of oblivion ;) Fixes: f84af32cbca70 ("net: ip_queue_rcv_skb() helper")) Signed-off-by: Eric Dumazet <edumazet@google.com> Reported-by: Anarcheuz Fritz <anarcheuz@gmail.com> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
-rw-r--r--net/ipv4/ip_sockglue.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
index b3648bbef0da..a6e1eeb02267 100644
--- a/net/ipv4/ip_sockglue.c
+++ b/net/ipv4/ip_sockglue.c
@@ -1009,7 +1009,8 @@ e_inval:
*/
int ip_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
{
- if (!(inet_sk(sk)->cmsg_flags & IP_CMSG_PKTINFO))
+ if (!(inet_sk(sk)->cmsg_flags & IP_CMSG_PKTINFO) &&
+ !IPCB(skb)->opt.optlen)
skb_dst_drop(skb);
return sock_queue_rcv_skb(sk, skb);
}