Loading net/core/dev.c +7 −5 Original line number Original line Diff line number Diff line Loading @@ -2528,15 +2528,17 @@ __u32 __skb_get_rxhash(struct sk_buff *skb) const struct ipv6hdr *ip6; const struct ipv6hdr *ip6; const struct iphdr *ip; const struct iphdr *ip; u8 ip_proto; u8 ip_proto; u32 addr1, addr2, ihl; u32 addr1, addr2; u16 proto; union { union { u32 v32; u32 v32; u16 v16[2]; u16 v16[2]; } ports; } ports; nhoff = skb_network_offset(skb); nhoff = skb_network_offset(skb); proto = skb->protocol; switch (skb->protocol) { switch (proto) { case __constant_htons(ETH_P_IP): case __constant_htons(ETH_P_IP): if (!pskb_may_pull(skb, sizeof(*ip) + nhoff)) if (!pskb_may_pull(skb, sizeof(*ip) + nhoff)) goto done; goto done; Loading @@ -2548,7 +2550,7 @@ __u32 __skb_get_rxhash(struct sk_buff *skb) ip_proto = ip->protocol; ip_proto = ip->protocol; addr1 = (__force u32) ip->saddr; addr1 = (__force u32) ip->saddr; addr2 = (__force u32) ip->daddr; addr2 = (__force u32) ip->daddr; ihl = ip->ihl; nhoff += ip->ihl * 4; break; break; case __constant_htons(ETH_P_IPV6): case __constant_htons(ETH_P_IPV6): if (!pskb_may_pull(skb, sizeof(*ip6) + nhoff)) if (!pskb_may_pull(skb, sizeof(*ip6) + nhoff)) Loading @@ -2558,7 +2560,7 @@ __u32 __skb_get_rxhash(struct sk_buff *skb) ip_proto = ip6->nexthdr; ip_proto = ip6->nexthdr; addr1 = (__force u32) ip6->saddr.s6_addr32[3]; addr1 = (__force u32) ip6->saddr.s6_addr32[3]; addr2 = (__force u32) ip6->daddr.s6_addr32[3]; addr2 = (__force u32) ip6->daddr.s6_addr32[3]; ihl = (40 >> 2); nhoff += 40; break; break; default: default: goto done; goto done; Loading @@ -2567,7 +2569,7 @@ __u32 __skb_get_rxhash(struct sk_buff *skb) ports.v32 = 0; ports.v32 = 0; poff = proto_ports_offset(ip_proto); poff = proto_ports_offset(ip_proto); if (poff >= 0) { if (poff >= 0) { nhoff += ihl * 4 + poff; nhoff += poff; if (pskb_may_pull(skb, nhoff + 4)) { if (pskb_may_pull(skb, nhoff + 4)) { ports.v32 = * (__force u32 *) (skb->data + nhoff); ports.v32 = * (__force u32 *) (skb->data + nhoff); if (ports.v16[1] < ports.v16[0]) if (ports.v16[1] < ports.v16[0]) Loading Loading
net/core/dev.c +7 −5 Original line number Original line Diff line number Diff line Loading @@ -2528,15 +2528,17 @@ __u32 __skb_get_rxhash(struct sk_buff *skb) const struct ipv6hdr *ip6; const struct ipv6hdr *ip6; const struct iphdr *ip; const struct iphdr *ip; u8 ip_proto; u8 ip_proto; u32 addr1, addr2, ihl; u32 addr1, addr2; u16 proto; union { union { u32 v32; u32 v32; u16 v16[2]; u16 v16[2]; } ports; } ports; nhoff = skb_network_offset(skb); nhoff = skb_network_offset(skb); proto = skb->protocol; switch (skb->protocol) { switch (proto) { case __constant_htons(ETH_P_IP): case __constant_htons(ETH_P_IP): if (!pskb_may_pull(skb, sizeof(*ip) + nhoff)) if (!pskb_may_pull(skb, sizeof(*ip) + nhoff)) goto done; goto done; Loading @@ -2548,7 +2550,7 @@ __u32 __skb_get_rxhash(struct sk_buff *skb) ip_proto = ip->protocol; ip_proto = ip->protocol; addr1 = (__force u32) ip->saddr; addr1 = (__force u32) ip->saddr; addr2 = (__force u32) ip->daddr; addr2 = (__force u32) ip->daddr; ihl = ip->ihl; nhoff += ip->ihl * 4; break; break; case __constant_htons(ETH_P_IPV6): case __constant_htons(ETH_P_IPV6): if (!pskb_may_pull(skb, sizeof(*ip6) + nhoff)) if (!pskb_may_pull(skb, sizeof(*ip6) + nhoff)) Loading @@ -2558,7 +2560,7 @@ __u32 __skb_get_rxhash(struct sk_buff *skb) ip_proto = ip6->nexthdr; ip_proto = ip6->nexthdr; addr1 = (__force u32) ip6->saddr.s6_addr32[3]; addr1 = (__force u32) ip6->saddr.s6_addr32[3]; addr2 = (__force u32) ip6->daddr.s6_addr32[3]; addr2 = (__force u32) ip6->daddr.s6_addr32[3]; ihl = (40 >> 2); nhoff += 40; break; break; default: default: goto done; goto done; Loading @@ -2567,7 +2569,7 @@ __u32 __skb_get_rxhash(struct sk_buff *skb) ports.v32 = 0; ports.v32 = 0; poff = proto_ports_offset(ip_proto); poff = proto_ports_offset(ip_proto); if (poff >= 0) { if (poff >= 0) { nhoff += ihl * 4 + poff; nhoff += poff; if (pskb_may_pull(skb, nhoff + 4)) { if (pskb_may_pull(skb, nhoff + 4)) { ports.v32 = * (__force u32 *) (skb->data + nhoff); ports.v32 = * (__force u32 *) (skb->data + nhoff); if (ports.v16[1] < ports.v16[0]) if (ports.v16[1] < ports.v16[0]) Loading