aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2015-11-05 14:34:06 -0500
committerDavid S. Miller <davem@davemloft.net>2015-11-05 14:36:09 -0500
commitf668f5f7e0861087ef9d64d473a9c1399fc25471 (patch)
tree1c8d2a2a9ac34b6b5340a1d102288c7f1aa33e22 /net/ipv4
parent805c4bc05705fb2b71ec970960b456eee9900953 (diff)
ipv4: use sk_fullsock() in ipv4_conntrack_defrag()
Before converting a 'socket pointer' into inet socket, use sk_fullsock() to detect timewait or request sockets. Fixes: ca6fb0651883 ("tcp: attach SYNACK messages to request sockets instead of listener") Signed-off-by: Eric Dumazet <edumazet@google.com> Reported-by: Dmitry Vyukov <dvyukov@google.com> Tested-by: Dmitry Vyukov <dvyukov@google.com> Cc: Pablo Neira Ayuso <pablo@netfilter.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4')
-rw-r--r--net/ipv4/netfilter/nf_defrag_ipv4.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/net/ipv4/netfilter/nf_defrag_ipv4.c b/net/ipv4/netfilter/nf_defrag_ipv4.c
index 0e5591c2ee9f..6fb869f646bf 100644
--- a/net/ipv4/netfilter/nf_defrag_ipv4.c
+++ b/net/ipv4/netfilter/nf_defrag_ipv4.c
@@ -67,10 +67,9 @@ static unsigned int ipv4_conntrack_defrag(void *priv,
67 const struct nf_hook_state *state) 67 const struct nf_hook_state *state)
68{ 68{
69 struct sock *sk = skb->sk; 69 struct sock *sk = skb->sk;
70 struct inet_sock *inet = inet_sk(skb->sk);
71 70
72 if (sk && (sk->sk_family == PF_INET) && 71 if (sk && sk_fullsock(sk) && (sk->sk_family == PF_INET) &&
73 inet->nodefrag) 72 inet_sk(sk)->nodefrag)
74 return NF_ACCEPT; 73 return NF_ACCEPT;
75 74
76#if IS_ENABLED(CONFIG_NF_CONNTRACK) 75#if IS_ENABLED(CONFIG_NF_CONNTRACK)