|
@@ -1301,8 +1301,6 @@ int neigh_resolve_output(struct neighbour *neigh, struct sk_buff *skb)
|
|
|
if (!dst)
|
|
|
goto discard;
|
|
|
|
|
|
- __skb_pull(skb, skb_network_offset(skb));
|
|
|
-
|
|
|
if (!neigh_event_send(neigh, skb)) {
|
|
|
int err;
|
|
|
struct net_device *dev = neigh->dev;
|
|
@@ -1312,6 +1310,7 @@ int neigh_resolve_output(struct neighbour *neigh, struct sk_buff *skb)
|
|
|
neigh_hh_init(neigh, dst);
|
|
|
|
|
|
do {
|
|
|
+ __skb_pull(skb, skb_network_offset(skb));
|
|
|
seq = read_seqbegin(&neigh->ha_lock);
|
|
|
err = dev_hard_header(skb, dev, ntohs(skb->protocol),
|
|
|
neigh->ha, NULL, skb->len);
|
|
@@ -1342,9 +1341,8 @@ int neigh_connected_output(struct neighbour *neigh, struct sk_buff *skb)
|
|
|
unsigned int seq;
|
|
|
int err;
|
|
|
|
|
|
- __skb_pull(skb, skb_network_offset(skb));
|
|
|
-
|
|
|
do {
|
|
|
+ __skb_pull(skb, skb_network_offset(skb));
|
|
|
seq = read_seqbegin(&neigh->ha_lock);
|
|
|
err = dev_hard_header(skb, dev, ntohs(skb->protocol),
|
|
|
neigh->ha, NULL, skb->len);
|