Other users of IPv6 tunneling (e.g. openvswitch) may not have a net_device that represents the tunnel.
Signed-off-by: Jiri Benc <[email protected]> --- include/net/ip6_tunnel.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/net/ip6_tunnel.h b/include/net/ip6_tunnel.h index b8529aa1dae7..c74916a09d53 100644 --- a/include/net/ip6_tunnel.h +++ b/include/net/ip6_tunnel.h @@ -76,12 +76,15 @@ int ip6_tnl_get_iflink(const struct net_device *dev); static inline void ip6tunnel_xmit(struct sock *sk, struct sk_buff *skb, struct net_device *dev) { - struct net_device_stats *stats = &dev->stats; + struct net_device_stats *stats; int pkt_len, err; pkt_len = skb->len; err = ip6_local_out_sk(sk, skb); + if (!dev) + return; + stats = &dev->stats; if (net_xmit_eval(err) == 0) { struct pcpu_sw_netstats *tstats = this_cpu_ptr(dev->tstats); u64_stats_update_begin(&tstats->syncp); -- 1.8.3.1 _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
