From: Sarveshwar Bandi Date: Wed, 10 Oct 2012 01:15:01 +0000 (+0000) Subject: bridge: Pull ip header into skb->data before looking into ip header. X-Git-Tag: firefly_0821_release~7541^2~14 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=98df2584aaa730220adc29a7fbfa1c551fee5930;p=firefly-linux-kernel-4.4.55.git bridge: Pull ip header into skb->data before looking into ip header. [ Upstream commit 6caab7b0544e83e6c160b5e80f5a4a7dd69545c7 ] If lower layer driver leaves the ip header in the skb fragment, it needs to be first pulled into skb->data before inspecting ip header length or ip version number. Signed-off-by: Sarveshwar Bandi Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c index 3dc7f5446a9d..c3d0729f971e 100644 --- a/net/bridge/br_netfilter.c +++ b/net/bridge/br_netfilter.c @@ -233,6 +233,9 @@ static int br_parse_ip_options(struct sk_buff *skb) struct net_device *dev = skb->dev; u32 len; + if (!pskb_may_pull(skb, sizeof(struct iphdr))) + goto inhdr_error; + iph = ip_hdr(skb); opt = &(IPCB(skb)->opt);