diff options
| -rw-r--r-- | drivers/isdn/i4l/isdn_net.c | 2 | ||||
| -rw-r--r-- | drivers/net/atl1/atl1_main.c | 2 | ||||
| -rw-r--r-- | drivers/net/chelsio/sge.c | 2 | ||||
| -rw-r--r-- | drivers/net/cxgb3/sge.c | 2 | ||||
| -rw-r--r-- | drivers/net/e1000/e1000_main.c | 2 | ||||
| -rw-r--r-- | drivers/net/gianfar.c | 2 | ||||
| -rw-r--r-- | drivers/net/ixgb/ixgb_main.c | 2 | ||||
| -rw-r--r-- | drivers/net/netxen/netxen_nic_hw.c | 2 | ||||
| -rw-r--r-- | include/linux/skbuff.h | 5 | ||||
| -rw-r--r-- | net/ax25/ax25_out.c | 4 | ||||
| -rw-r--r-- | net/core/neighbour.c | 6 | ||||
| -rw-r--r-- | net/ipv4/ip_output.c | 4 | ||||
| -rw-r--r-- | net/ipv6/icmp.c | 4 | ||||
| -rw-r--r-- | net/ipv6/ip6_output.c | 4 | ||||
| -rw-r--r-- | net/netfilter/nf_conntrack_core.c | 4 | ||||
| -rw-r--r-- | net/packet/af_packet.c | 8 | ||||
| -rw-r--r-- | net/sched/sch_teql.c | 2 | ||||
| -rw-r--r-- | security/selinux/hooks.c | 4 |
18 files changed, 33 insertions, 28 deletions
diff --git a/drivers/isdn/i4l/isdn_net.c b/drivers/isdn/i4l/isdn_net.c index fadb9291bc1b..0c2b3752e46e 100644 --- a/drivers/isdn/i4l/isdn_net.c +++ b/drivers/isdn/i4l/isdn_net.c | |||
| @@ -1121,7 +1121,7 @@ isdn_net_adjust_hdr(struct sk_buff *skb, struct net_device *dev) | |||
| 1121 | if (!skb) | 1121 | if (!skb) |
| 1122 | return; | 1122 | return; |
| 1123 | if (lp->p_encap == ISDN_NET_ENCAP_ETHER) { | 1123 | if (lp->p_encap == ISDN_NET_ENCAP_ETHER) { |
| 1124 | int pullsize = (ulong)skb->nh.raw - (ulong)skb->data - ETH_HLEN; | 1124 | const int pullsize = skb_network_offset(skb) - ETH_HLEN; |
| 1125 | if (pullsize > 0) { | 1125 | if (pullsize > 0) { |
| 1126 | printk(KERN_DEBUG "isdn_net: Pull junk %d\n", pullsize); | 1126 | printk(KERN_DEBUG "isdn_net: Pull junk %d\n", pullsize); |
| 1127 | skb_pull(skb, pullsize); | 1127 | skb_pull(skb, pullsize); |
diff --git a/drivers/net/atl1/atl1_main.c b/drivers/net/atl1/atl1_main.c index e3f181602e4f..793a61b2140f 100644 --- a/drivers/net/atl1/atl1_main.c +++ b/drivers/net/atl1/atl1_main.c | |||
| @@ -1300,7 +1300,7 @@ static int atl1_tso(struct atl1_adapter *adapter, struct sk_buff *skb, | |||
| 1300 | ~csum_tcpudp_magic(skb->nh.iph->saddr, | 1300 | ~csum_tcpudp_magic(skb->nh.iph->saddr, |
| 1301 | skb->nh.iph->daddr, 0, | 1301 | skb->nh.iph->daddr, 0, |
| 1302 | IPPROTO_TCP, 0); | 1302 | IPPROTO_TCP, 0); |
| 1303 | ipofst = skb->nh.raw - skb->data; | 1303 | ipofst = skb_network_offset(skb); |
| 1304 | if (ipofst != ENET_HEADER_SIZE) /* 802.3 frame */ | 1304 | if (ipofst != ENET_HEADER_SIZE) /* 802.3 frame */ |
| 1305 | tso->tsopl |= 1 << TSO_PARAM_ETHTYPE_SHIFT; | 1305 | tso->tsopl |= 1 << TSO_PARAM_ETHTYPE_SHIFT; |
| 1306 | 1306 | ||
diff --git a/drivers/net/chelsio/sge.c b/drivers/net/chelsio/sge.c index 47fa8dcf7527..8cdee67d582f 100644 --- a/drivers/net/chelsio/sge.c +++ b/drivers/net/chelsio/sge.c | |||
| @@ -1865,7 +1865,7 @@ int t1_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
| 1865 | 1865 | ||
| 1866 | ++st->tx_tso; | 1866 | ++st->tx_tso; |
| 1867 | 1867 | ||
| 1868 | eth_type = skb->nh.raw - skb->data == ETH_HLEN ? | 1868 | eth_type = skb_network_offset(skb) == ETH_HLEN ? |
| 1869 | CPL_ETH_II : CPL_ETH_II_VLAN; | 1869 | CPL_ETH_II : CPL_ETH_II_VLAN; |
| 1870 | 1870 | ||
| 1871 | hdr = (struct cpl_tx_pkt_lso *)skb_push(skb, sizeof(*hdr)); | 1871 | hdr = (struct cpl_tx_pkt_lso *)skb_push(skb, sizeof(*hdr)); |
diff --git a/drivers/net/cxgb3/sge.c b/drivers/net/cxgb3/sge.c index 4dd712088bcf..7e9e9db4fb97 100644 --- a/drivers/net/cxgb3/sge.c +++ b/drivers/net/cxgb3/sge.c | |||
| @@ -897,7 +897,7 @@ static void write_tx_pkt_wr(struct adapter *adap, struct sk_buff *skb, | |||
| 897 | d->flit[2] = 0; | 897 | d->flit[2] = 0; |
| 898 | cntrl |= V_TXPKT_OPCODE(CPL_TX_PKT_LSO); | 898 | cntrl |= V_TXPKT_OPCODE(CPL_TX_PKT_LSO); |
| 899 | hdr->cntrl = htonl(cntrl); | 899 | hdr->cntrl = htonl(cntrl); |
| 900 | eth_type = skb->nh.raw - skb->data == ETH_HLEN ? | 900 | eth_type = skb_network_offset(skb) == ETH_HLEN ? |
| 901 | CPL_ETH_II : CPL_ETH_II_VLAN; | 901 | CPL_ETH_II : CPL_ETH_II_VLAN; |
| 902 | tso_info |= V_LSO_ETH_TYPE(eth_type) | | 902 | tso_info |= V_LSO_ETH_TYPE(eth_type) | |
| 903 | V_LSO_IPHDR_WORDS(skb->nh.iph->ihl) | | 903 | V_LSO_IPHDR_WORDS(skb->nh.iph->ihl) | |
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c index b28a915bd980..86161011b539 100644 --- a/drivers/net/e1000/e1000_main.c +++ b/drivers/net/e1000/e1000_main.c | |||
| @@ -2910,7 +2910,7 @@ e1000_tso(struct e1000_adapter *adapter, struct e1000_tx_ring *tx_ring, | |||
| 2910 | 0); | 2910 | 0); |
| 2911 | ipcse = 0; | 2911 | ipcse = 0; |
| 2912 | } | 2912 | } |
| 2913 | ipcss = skb->nh.raw - skb->data; | 2913 | ipcss = skb_network_offset(skb); |
| 2914 | ipcso = (void *)&(skb->nh.iph->check) - (void *)skb->data; | 2914 | ipcso = (void *)&(skb->nh.iph->check) - (void *)skb->data; |
| 2915 | tucss = skb->h.raw - skb->data; | 2915 | tucss = skb->h.raw - skb->data; |
| 2916 | tucso = (void *)&(skb->h.th->check) - (void *)skb->data; | 2916 | tucso = (void *)&(skb->h.th->check) - (void *)skb->data; |
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c index 1d019195a391..c7a70933c759 100644 --- a/drivers/net/gianfar.c +++ b/drivers/net/gianfar.c | |||
| @@ -952,7 +952,7 @@ static inline void gfar_tx_checksum(struct sk_buff *skb, struct txfcb *fcb) | |||
| 952 | * frame (skb->data) and the start of the IP hdr. | 952 | * frame (skb->data) and the start of the IP hdr. |
| 953 | * l4os is the distance between the start of the | 953 | * l4os is the distance between the start of the |
| 954 | * l3 hdr and the l4 hdr */ | 954 | * l3 hdr and the l4 hdr */ |
| 955 | fcb->l3os = (u16)(skb->nh.raw - skb->data - GMAC_FCB_LEN); | 955 | fcb->l3os = (u16)(skb_network_offset(skb) - GMAC_FCB_LEN); |
| 956 | fcb->l4os = (u16)(skb->h.raw - skb->nh.raw); | 956 | fcb->l4os = (u16)(skb->h.raw - skb->nh.raw); |
| 957 | 957 | ||
| 958 | fcb->flags = flags; | 958 | fcb->flags = flags; |
diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c index afc2ec72529e..cfb791bb45e2 100644 --- a/drivers/net/ixgb/ixgb_main.c +++ b/drivers/net/ixgb/ixgb_main.c | |||
| @@ -1195,7 +1195,7 @@ ixgb_tso(struct ixgb_adapter *adapter, struct sk_buff *skb) | |||
| 1195 | skb->h.th->check = ~csum_tcpudp_magic(skb->nh.iph->saddr, | 1195 | skb->h.th->check = ~csum_tcpudp_magic(skb->nh.iph->saddr, |
| 1196 | skb->nh.iph->daddr, | 1196 | skb->nh.iph->daddr, |
| 1197 | 0, IPPROTO_TCP, 0); | 1197 | 0, IPPROTO_TCP, 0); |
| 1198 | ipcss = skb->nh.raw - skb->data; | 1198 | ipcss = skb_network_offset(skb); |
| 1199 | ipcso = (void *)&(skb->nh.iph->check) - (void *)skb->data; | 1199 | ipcso = (void *)&(skb->nh.iph->check) - (void *)skb->data; |
| 1200 | ipcse = skb->h.raw - skb->data - 1; | 1200 | ipcse = skb->h.raw - skb->data - 1; |
| 1201 | tucss = skb->h.raw - skb->data; | 1201 | tucss = skb->h.raw - skb->data; |
diff --git a/drivers/net/netxen/netxen_nic_hw.c b/drivers/net/netxen/netxen_nic_hw.c index 6537574a9cda..625e11ed6aae 100644 --- a/drivers/net/netxen/netxen_nic_hw.c +++ b/drivers/net/netxen/netxen_nic_hw.c | |||
| @@ -386,7 +386,7 @@ void netxen_tso_check(struct netxen_adapter *adapter, | |||
| 386 | } | 386 | } |
| 387 | adapter->stats.xmitcsummed++; | 387 | adapter->stats.xmitcsummed++; |
| 388 | desc->tcp_hdr_offset = skb->h.raw - skb->data; | 388 | desc->tcp_hdr_offset = skb->h.raw - skb->data; |
| 389 | desc->ip_hdr_offset = skb->nh.raw - skb->data; | 389 | desc->ip_hdr_offset = skb_network_offset(skb); |
| 390 | } | 390 | } |
| 391 | 391 | ||
| 392 | int netxen_is_flash_supported(struct netxen_adapter *adapter) | 392 | int netxen_is_flash_supported(struct netxen_adapter *adapter) |
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 6440c78fe625..47cc8b07c2b4 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
| @@ -965,6 +965,11 @@ static inline void skb_reset_network_header(struct sk_buff *skb) | |||
| 965 | skb->nh.raw = skb->data; | 965 | skb->nh.raw = skb->data; |
| 966 | } | 966 | } |
| 967 | 967 | ||
| 968 | static inline int skb_network_offset(const struct sk_buff *skb) | ||
| 969 | { | ||
| 970 | return skb->nh.raw - skb->data; | ||
| 971 | } | ||
| 972 | |||
| 968 | static inline unsigned char *skb_mac_header(const struct sk_buff *skb) | 973 | static inline unsigned char *skb_mac_header(const struct sk_buff *skb) |
| 969 | { | 974 | { |
| 970 | return skb->mac.raw; | 975 | return skb->mac.raw; |
diff --git a/net/ax25/ax25_out.c b/net/ax25/ax25_out.c index 6e08dc8dee40..02dea851a11a 100644 --- a/net/ax25/ax25_out.c +++ b/net/ax25/ax25_out.c | |||
| @@ -148,7 +148,7 @@ void ax25_output(ax25_cb *ax25, int paclen, struct sk_buff *skb) | |||
| 148 | 148 | ||
| 149 | if (ka9qfrag == 1) { | 149 | if (ka9qfrag == 1) { |
| 150 | skb_reserve(skbn, frontlen + 2); | 150 | skb_reserve(skbn, frontlen + 2); |
| 151 | skbn->nh.raw = skbn->data + (skb->nh.raw - skb->data); | 151 | skbn->nh.raw = skbn->data + skb_network_offset(skb); |
| 152 | memcpy(skb_put(skbn, len), skb->data, len); | 152 | memcpy(skb_put(skbn, len), skb->data, len); |
| 153 | p = skb_push(skbn, 2); | 153 | p = skb_push(skbn, 2); |
| 154 | 154 | ||
| @@ -161,7 +161,7 @@ void ax25_output(ax25_cb *ax25, int paclen, struct sk_buff *skb) | |||
| 161 | } | 161 | } |
| 162 | } else { | 162 | } else { |
| 163 | skb_reserve(skbn, frontlen + 1); | 163 | skb_reserve(skbn, frontlen + 1); |
| 164 | skbn->nh.raw = skbn->data + (skb->nh.raw - skb->data); | 164 | skbn->nh.raw = skbn->data + skb_network_offset(skb); |
| 165 | memcpy(skb_put(skbn, len), skb->data, len); | 165 | memcpy(skb_put(skbn, len), skb->data, len); |
| 166 | p = skb_push(skbn, 1); | 166 | p = skb_push(skbn, 1); |
| 167 | *p = AX25_P_TEXT; | 167 | *p = AX25_P_TEXT; |
diff --git a/net/core/neighbour.c b/net/core/neighbour.c index 841e3f32cab1..c5653c512b43 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c | |||
| @@ -1125,7 +1125,7 @@ int neigh_compat_output(struct sk_buff *skb) | |||
| 1125 | { | 1125 | { |
| 1126 | struct net_device *dev = skb->dev; | 1126 | struct net_device *dev = skb->dev; |
| 1127 | 1127 | ||
| 1128 | __skb_pull(skb, skb->nh.raw - skb->data); | 1128 | __skb_pull(skb, skb_network_offset(skb)); |
| 1129 | 1129 | ||
| 1130 | if (dev->hard_header && | 1130 | if (dev->hard_header && |
| 1131 | dev->hard_header(skb, dev, ntohs(skb->protocol), NULL, NULL, | 1131 | dev->hard_header(skb, dev, ntohs(skb->protocol), NULL, NULL, |
| @@ -1147,7 +1147,7 @@ int neigh_resolve_output(struct sk_buff *skb) | |||
| 1147 | if (!dst || !(neigh = dst->neighbour)) | 1147 | if (!dst || !(neigh = dst->neighbour)) |
| 1148 | goto discard; | 1148 | goto discard; |
| 1149 | 1149 | ||
| 1150 | __skb_pull(skb, skb->nh.raw - skb->data); | 1150 | __skb_pull(skb, skb_network_offset(skb)); |
| 1151 | 1151 | ||
| 1152 | if (!neigh_event_send(neigh, skb)) { | 1152 | if (!neigh_event_send(neigh, skb)) { |
| 1153 | int err; | 1153 | int err; |
| @@ -1190,7 +1190,7 @@ int neigh_connected_output(struct sk_buff *skb) | |||
| 1190 | struct neighbour *neigh = dst->neighbour; | 1190 | struct neighbour *neigh = dst->neighbour; |
| 1191 | struct net_device *dev = neigh->dev; | 1191 | struct net_device *dev = neigh->dev; |
| 1192 | 1192 | ||
| 1193 | __skb_pull(skb, skb->nh.raw - skb->data); | 1193 | __skb_pull(skb, skb_network_offset(skb)); |
| 1194 | 1194 | ||
| 1195 | read_lock_bh(&neigh->lock); | 1195 | read_lock_bh(&neigh->lock); |
| 1196 | err = dev->hard_header(skb, dev, ntohs(skb->protocol), | 1196 | err = dev->hard_header(skb, dev, ntohs(skb->protocol), |
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c index 99cd90c22310..669f5d97c6eb 100644 --- a/net/ipv4/ip_output.c +++ b/net/ipv4/ip_output.c | |||
| @@ -96,7 +96,7 @@ __inline__ void ip_send_check(struct iphdr *iph) | |||
| 96 | static int ip_dev_loopback_xmit(struct sk_buff *newskb) | 96 | static int ip_dev_loopback_xmit(struct sk_buff *newskb) |
| 97 | { | 97 | { |
| 98 | skb_reset_mac_header(newskb); | 98 | skb_reset_mac_header(newskb); |
| 99 | __skb_pull(newskb, newskb->nh.raw - newskb->data); | 99 | __skb_pull(newskb, skb_network_offset(newskb)); |
| 100 | newskb->pkt_type = PACKET_LOOPBACK; | 100 | newskb->pkt_type = PACKET_LOOPBACK; |
| 101 | newskb->ip_summed = CHECKSUM_UNNECESSARY; | 101 | newskb->ip_summed = CHECKSUM_UNNECESSARY; |
| 102 | BUG_TRAP(newskb->dst); | 102 | BUG_TRAP(newskb->dst); |
| @@ -1199,7 +1199,7 @@ int ip_push_pending_frames(struct sock *sk) | |||
| 1199 | 1199 | ||
| 1200 | /* move skb->data to ip header from ext header */ | 1200 | /* move skb->data to ip header from ext header */ |
| 1201 | if (skb->data < skb->nh.raw) | 1201 | if (skb->data < skb->nh.raw) |
| 1202 | __skb_pull(skb, skb->nh.raw - skb->data); | 1202 | __skb_pull(skb, skb_network_offset(skb)); |
| 1203 | while ((tmp_skb = __skb_dequeue(&sk->sk_write_queue)) != NULL) { | 1203 | while ((tmp_skb = __skb_dequeue(&sk->sk_write_queue)) != NULL) { |
| 1204 | __skb_pull(tmp_skb, skb->h.raw - skb->nh.raw); | 1204 | __skb_pull(tmp_skb, skb->h.raw - skb->nh.raw); |
| 1205 | *tail_skb = tmp_skb; | 1205 | *tail_skb = tmp_skb; |
diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c index a91dfbce8433..aa4a0a59ffac 100644 --- a/net/ipv6/icmp.c +++ b/net/ipv6/icmp.c | |||
| @@ -206,7 +206,7 @@ static __inline__ int opt_unrec(struct sk_buff *skb, __u32 offset) | |||
| 206 | { | 206 | { |
| 207 | u8 _optval, *op; | 207 | u8 _optval, *op; |
| 208 | 208 | ||
| 209 | offset += skb->nh.raw - skb->data; | 209 | offset += skb_network_offset(skb); |
| 210 | op = skb_header_pointer(skb, offset, sizeof(_optval), &_optval); | 210 | op = skb_header_pointer(skb, offset, sizeof(_optval), &_optval); |
| 211 | if (op == NULL) | 211 | if (op == NULL) |
| 212 | return 1; | 212 | return 1; |
| @@ -431,7 +431,7 @@ void icmpv6_send(struct sk_buff *skb, int type, int code, __u32 info, | |||
| 431 | tclass = 0; | 431 | tclass = 0; |
| 432 | 432 | ||
| 433 | msg.skb = skb; | 433 | msg.skb = skb; |
| 434 | msg.offset = skb->nh.raw - skb->data; | 434 | msg.offset = skb_network_offset(skb); |
| 435 | msg.type = type; | 435 | msg.type = type; |
| 436 | 436 | ||
| 437 | len = skb->len - msg.offset; | 437 | len = skb->len - msg.offset; |
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 8a7b5c760147..47d00210cba1 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c | |||
| @@ -89,7 +89,7 @@ static inline int ip6_output_finish(struct sk_buff *skb) | |||
| 89 | static int ip6_dev_loopback_xmit(struct sk_buff *newskb) | 89 | static int ip6_dev_loopback_xmit(struct sk_buff *newskb) |
| 90 | { | 90 | { |
| 91 | skb_reset_mac_header(newskb); | 91 | skb_reset_mac_header(newskb); |
| 92 | __skb_pull(newskb, newskb->nh.raw - newskb->data); | 92 | __skb_pull(newskb, skb_network_offset(newskb)); |
| 93 | newskb->pkt_type = PACKET_LOOPBACK; | 93 | newskb->pkt_type = PACKET_LOOPBACK; |
| 94 | newskb->ip_summed = CHECKSUM_UNNECESSARY; | 94 | newskb->ip_summed = CHECKSUM_UNNECESSARY; |
| 95 | BUG_TRAP(newskb->dst); | 95 | BUG_TRAP(newskb->dst); |
| @@ -1330,7 +1330,7 @@ int ip6_push_pending_frames(struct sock *sk) | |||
| 1330 | 1330 | ||
| 1331 | /* move skb->data to ip header from ext header */ | 1331 | /* move skb->data to ip header from ext header */ |
| 1332 | if (skb->data < skb->nh.raw) | 1332 | if (skb->data < skb->nh.raw) |
| 1333 | __skb_pull(skb, skb->nh.raw - skb->data); | 1333 | __skb_pull(skb, skb_network_offset(skb)); |
| 1334 | while ((tmp_skb = __skb_dequeue(&sk->sk_write_queue)) != NULL) { | 1334 | while ((tmp_skb = __skb_dequeue(&sk->sk_write_queue)) != NULL) { |
| 1335 | __skb_pull(tmp_skb, skb->h.raw - skb->nh.raw); | 1335 | __skb_pull(tmp_skb, skb->h.raw - skb->nh.raw); |
| 1336 | *tail_skb = tmp_skb; | 1336 | *tail_skb = tmp_skb; |
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c index b3a70eb6d42a..7694c51f1251 100644 --- a/net/netfilter/nf_conntrack_core.c +++ b/net/netfilter/nf_conntrack_core.c | |||
| @@ -768,7 +768,7 @@ resolve_normal_ct(struct sk_buff *skb, | |||
| 768 | struct nf_conntrack_tuple_hash *h; | 768 | struct nf_conntrack_tuple_hash *h; |
| 769 | struct nf_conn *ct; | 769 | struct nf_conn *ct; |
| 770 | 770 | ||
| 771 | if (!nf_ct_get_tuple(skb, (unsigned int)(skb->nh.raw - skb->data), | 771 | if (!nf_ct_get_tuple(skb, skb_network_offset(skb), |
| 772 | dataoff, l3num, protonum, &tuple, l3proto, | 772 | dataoff, l3num, protonum, &tuple, l3proto, |
| 773 | l4proto)) { | 773 | l4proto)) { |
| 774 | DEBUGP("resolve_normal_ct: Can't get tuple\n"); | 774 | DEBUGP("resolve_normal_ct: Can't get tuple\n"); |
| @@ -960,7 +960,7 @@ void __nf_ct_refresh_acct(struct nf_conn *ct, | |||
| 960 | if (do_acct) { | 960 | if (do_acct) { |
| 961 | ct->counters[CTINFO2DIR(ctinfo)].packets++; | 961 | ct->counters[CTINFO2DIR(ctinfo)].packets++; |
| 962 | ct->counters[CTINFO2DIR(ctinfo)].bytes += | 962 | ct->counters[CTINFO2DIR(ctinfo)].bytes += |
| 963 | skb->len - (unsigned int)(skb->nh.raw - skb->data); | 963 | skb->len - skb_network_offset(skb); |
| 964 | 964 | ||
| 965 | if ((ct->counters[CTINFO2DIR(ctinfo)].packets & 0x80000000) | 965 | if ((ct->counters[CTINFO2DIR(ctinfo)].packets & 0x80000000) |
| 966 | || (ct->counters[CTINFO2DIR(ctinfo)].bytes & 0x80000000)) | 966 | || (ct->counters[CTINFO2DIR(ctinfo)].bytes & 0x80000000)) |
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c index 1225e751b3f1..a059cc7be672 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c | |||
| @@ -491,7 +491,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, struct packet | |||
| 491 | skb_push(skb, skb->data - skb_mac_header(skb)); | 491 | skb_push(skb, skb->data - skb_mac_header(skb)); |
| 492 | else if (skb->pkt_type == PACKET_OUTGOING) { | 492 | else if (skb->pkt_type == PACKET_OUTGOING) { |
| 493 | /* Special case: outgoing packets have ll header at head */ | 493 | /* Special case: outgoing packets have ll header at head */ |
| 494 | skb_pull(skb, skb->nh.raw - skb->data); | 494 | skb_pull(skb, skb_network_offset(skb)); |
| 495 | } | 495 | } |
| 496 | } | 496 | } |
| 497 | 497 | ||
| @@ -595,7 +595,7 @@ static int tpacket_rcv(struct sk_buff *skb, struct net_device *dev, struct packe | |||
| 595 | skb_push(skb, skb->data - skb_mac_header(skb)); | 595 | skb_push(skb, skb->data - skb_mac_header(skb)); |
| 596 | else if (skb->pkt_type == PACKET_OUTGOING) { | 596 | else if (skb->pkt_type == PACKET_OUTGOING) { |
| 597 | /* Special case: outgoing packets have ll header at head */ | 597 | /* Special case: outgoing packets have ll header at head */ |
| 598 | skb_pull(skb, skb->nh.raw - skb->data); | 598 | skb_pull(skb, skb_network_offset(skb)); |
| 599 | } | 599 | } |
| 600 | } | 600 | } |
| 601 | 601 | ||
| @@ -613,7 +613,7 @@ static int tpacket_rcv(struct sk_buff *skb, struct net_device *dev, struct packe | |||
| 613 | if (sk->sk_type == SOCK_DGRAM) { | 613 | if (sk->sk_type == SOCK_DGRAM) { |
| 614 | macoff = netoff = TPACKET_ALIGN(TPACKET_HDRLEN) + 16; | 614 | macoff = netoff = TPACKET_ALIGN(TPACKET_HDRLEN) + 16; |
| 615 | } else { | 615 | } else { |
| 616 | unsigned maclen = skb->nh.raw - skb->data; | 616 | unsigned maclen = skb_network_offset(skb); |
| 617 | netoff = TPACKET_ALIGN(TPACKET_HDRLEN + (maclen < 16 ? 16 : maclen)); | 617 | netoff = TPACKET_ALIGN(TPACKET_HDRLEN + (maclen < 16 ? 16 : maclen)); |
| 618 | macoff = netoff - maclen; | 618 | macoff = netoff - maclen; |
| 619 | } | 619 | } |
| @@ -1145,7 +1145,7 @@ static int packet_recvmsg(struct kiocb *iocb, struct socket *sock, | |||
| 1145 | aux.tp_len = PACKET_SKB_CB(skb)->origlen; | 1145 | aux.tp_len = PACKET_SKB_CB(skb)->origlen; |
| 1146 | aux.tp_snaplen = skb->len; | 1146 | aux.tp_snaplen = skb->len; |
| 1147 | aux.tp_mac = 0; | 1147 | aux.tp_mac = 0; |
| 1148 | aux.tp_net = skb->nh.raw - skb->data; | 1148 | aux.tp_net = skb_network_offset(skb); |
| 1149 | 1149 | ||
| 1150 | put_cmsg(msg, SOL_PACKET, PACKET_AUXDATA, sizeof(aux), &aux); | 1150 | put_cmsg(msg, SOL_PACKET, PACKET_AUXDATA, sizeof(aux), &aux); |
| 1151 | } | 1151 | } |
diff --git a/net/sched/sch_teql.c b/net/sched/sch_teql.c index 587123c61af9..d24914db7861 100644 --- a/net/sched/sch_teql.c +++ b/net/sched/sch_teql.c | |||
| @@ -323,7 +323,7 @@ restart: | |||
| 323 | nores = 1; | 323 | nores = 1; |
| 324 | break; | 324 | break; |
| 325 | } | 325 | } |
| 326 | __skb_pull(skb, skb->nh.raw - skb->data); | 326 | __skb_pull(skb, skb_network_offset(skb)); |
| 327 | } while ((q = NEXT_SLAVE(q)) != start); | 327 | } while ((q = NEXT_SLAVE(q)) != start); |
| 328 | 328 | ||
| 329 | if (nores && skb_res == NULL) { | 329 | if (nores && skb_res == NULL) { |
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index d41e24d6ae41..addb58501057 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c | |||
| @@ -2944,7 +2944,7 @@ static int selinux_parse_skb_ipv4(struct sk_buff *skb, | |||
| 2944 | int offset, ihlen, ret = -EINVAL; | 2944 | int offset, ihlen, ret = -EINVAL; |
| 2945 | struct iphdr _iph, *ih; | 2945 | struct iphdr _iph, *ih; |
| 2946 | 2946 | ||
| 2947 | offset = skb->nh.raw - skb->data; | 2947 | offset = skb_network_offset(skb); |
| 2948 | ih = skb_header_pointer(skb, offset, sizeof(_iph), &_iph); | 2948 | ih = skb_header_pointer(skb, offset, sizeof(_iph), &_iph); |
| 2949 | if (ih == NULL) | 2949 | if (ih == NULL) |
| 2950 | goto out; | 2950 | goto out; |
| @@ -3026,7 +3026,7 @@ static int selinux_parse_skb_ipv6(struct sk_buff *skb, | |||
| 3026 | int ret = -EINVAL, offset; | 3026 | int ret = -EINVAL, offset; |
| 3027 | struct ipv6hdr _ipv6h, *ip6; | 3027 | struct ipv6hdr _ipv6h, *ip6; |
| 3028 | 3028 | ||
| 3029 | offset = skb->nh.raw - skb->data; | 3029 | offset = skb_network_offset(skb); |
| 3030 | ip6 = skb_header_pointer(skb, offset, sizeof(_ipv6h), &_ipv6h); | 3030 | ip6 = skb_header_pointer(skb, offset, sizeof(_ipv6h), &_ipv6h); |
| 3031 | if (ip6 == NULL) | 3031 | if (ip6 == NULL) |
| 3032 | goto out; | 3032 | goto out; |
