diff mbox

net: ipv4,nodefrag: check socket type before touching nodefrag flag

Message ID 1284974876-4596-1-git-send-email-jolsa@redhat.com
State Not Applicable, archived
Delegated to: David Miller
Headers show

Commit Message

Jiri Olsa Sept. 20, 2010, 9:27 a.m. UTC
hi,
we need to check proper socket type within ipv4_conntrack_defrag
function before referencing the nodefrag flag.

For example the tun driver receive path produces skbs with
AF_UNSPEC socket type, and so current code is causing unwanted
fragmented packets going out.

wbr,
jirka



Signed-off-by: Jiri Olsa <jolsa@redhat.com>
---
 net/ipv4/netfilter/nf_defrag_ipv4.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

Comments

Patrick McHardy Sept. 22, 2010, 6:59 a.m. UTC | #1
Am 20.09.2010 11:27, schrieb Jiri Olsa:
> we need to check proper socket type within ipv4_conntrack_defrag
> function before referencing the nodefrag flag.
> 
> For example the tun driver receive path produces skbs with
> AF_UNSPEC socket type, and so current code is causing unwanted
> fragmented packets going out.

Looks good. Applied, thanks.

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/net/ipv4/netfilter/nf_defrag_ipv4.c b/net/ipv4/netfilter/nf_defrag_ipv4.c
index eab8de3..f3a9b42 100644
--- a/net/ipv4/netfilter/nf_defrag_ipv4.c
+++ b/net/ipv4/netfilter/nf_defrag_ipv4.c
@@ -66,9 +66,11 @@  static unsigned int ipv4_conntrack_defrag(unsigned int hooknum,
 					  const struct net_device *out,
 					  int (*okfn)(struct sk_buff *))
 {
+	struct sock *sk = skb->sk;
 	struct inet_sock *inet = inet_sk(skb->sk);
 
-	if (inet && inet->nodefrag)
+	if (sk && (sk->sk_family == PF_INET) &&
+	    inet->nodefrag)
 		return NF_ACCEPT;
 
 #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)