hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/net/ipvlan/ipvlan_core.c
....@@ -437,6 +437,9 @@
437437 goto err;
438438 }
439439 skb_dst_set(skb, &rt->dst);
440
+
441
+ memset(IPCB(skb), 0, sizeof(*IPCB(skb)));
442
+
440443 err = ip_local_out(net, skb->sk, skb);
441444 if (unlikely(net_xmit_eval(err)))
442445 dev->stats.tx_errors++;
....@@ -475,6 +478,9 @@
475478 goto err;
476479 }
477480 skb_dst_set(skb, dst);
481
+
482
+ memset(IP6CB(skb), 0, sizeof(*IP6CB(skb)));
483
+
478484 err = ip6_local_out(net, skb->sk, skb);
479485 if (unlikely(net_xmit_eval(err)))
480486 dev->stats.tx_errors++;
....@@ -580,7 +586,8 @@
580586 consume_skb(skb);
581587 return NET_XMIT_DROP;
582588 }
583
- return ipvlan_rcv_frame(addr, &skb, true);
589
+ ipvlan_rcv_frame(addr, &skb, true);
590
+ return NET_XMIT_SUCCESS;
584591 }
585592 }
586593 out:
....@@ -606,7 +613,8 @@
606613 consume_skb(skb);
607614 return NET_XMIT_DROP;
608615 }
609
- return ipvlan_rcv_frame(addr, &skb, true);
616
+ ipvlan_rcv_frame(addr, &skb, true);
617
+ return NET_XMIT_SUCCESS;
610618 }
611619 }
612620 skb = skb_share_check(skb, GFP_ATOMIC);
....@@ -618,7 +626,8 @@
618626 * the skb for the main-dev. At the RX side we just return
619627 * RX_PASS for it to be processed further on the stack.
620628 */
621
- return dev_forward_skb(ipvlan->phy_dev, skb);
629
+ dev_forward_skb(ipvlan->phy_dev, skb);
630
+ return NET_XMIT_SUCCESS;
622631
623632 } else if (is_multicast_ether_addr(eth->h_dest)) {
624633 skb_reset_mac_header(skb);