aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2007-03-10 20:16:10 -0500
committerDavid S. Miller <davem@sunset.davemloft.net>2007-04-26 01:24:58 -0400
commitbbe735e4247dba32568a305553b010081c8dea99 (patch)
tree95d96619c85785a47ccee48965b68d99cf946854
parente7dd65dafda5737a983c04d652a69ab8da78ee3f (diff)
[SK_BUFF]: Introduce skb_network_offset()
For the quite common 'skb->nh.raw - skb->data' sequence. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/isdn/i4l/isdn_net.c2
-rw-r--r--drivers/net/atl1/atl1_main.c2
-rw-r--r--drivers/net/chelsio/sge.c2
-rw-r--r--drivers/net/cxgb3/sge.c2
-rw-r--r--drivers/net/e1000/e1000_main.c2
-rw-r--r--drivers/net/gianfar.c2
-rw-r--r--drivers/net/ixgb/ixgb_main.c2
-rw-r--r--drivers/net/netxen/netxen_nic_hw.c2
-rw-r--r--include/linux/skbuff.h5
-rw-r--r--net/ax25/ax25_out.c4
-rw-r--r--net/core/neighbour.c6
-rw-r--r--net/ipv4/ip_output.c4
-rw-r--r--net/ipv6/icmp.c4
-rw-r--r--net/ipv6/ip6_output.c4
-rw-r--r--net/netfilter/nf_conntrack_core.c4
-rw-r--r--net/packet/af_packet.c8
-rw-r--r--net/sched/sch_teql.c2
-rw-r--r--security/selinux/hooks.c4
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
392int netxen_is_flash_supported(struct netxen_adapter *adapter) 392int 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
968static inline int skb_network_offset(const struct sk_buff *skb)
969{
970 return skb->nh.raw - skb->data;
971}
972
968static inline unsigned char *skb_mac_header(const struct sk_buff *skb) 973static 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)
96static int ip_dev_loopback_xmit(struct sk_buff *newskb) 96static 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)
89static int ip6_dev_loopback_xmit(struct sk_buff *newskb) 89static 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;