diff options
Diffstat (limited to 'net/packet/af_packet.c')
-rw-r--r-- | net/packet/af_packet.c | 8 |
1 files changed, 4 insertions, 4 deletions
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 | } |