summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorXin Long2019-06-17 15:34:13 +0200
committerGreg Kroah-Hartman2019-08-04 09:30:57 +0200
commit4736bb27774449cf759ee81663b4126a297ba9d4 (patch)
tree849fea5cd6a2a777068ebd236560bd6b29689e47 /net
parentscsi: core: Avoid that a kernel warning appears during system resume (diff)
downloadkernel-qcow2-linux-4736bb27774449cf759ee81663b4126a297ba9d4.tar.gz
kernel-qcow2-linux-4736bb27774449cf759ee81663b4126a297ba9d4.tar.xz
kernel-qcow2-linux-4736bb27774449cf759ee81663b4126a297ba9d4.zip
ip_tunnel: allow not to count pkts on tstats by setting skb's dev to NULL
commit 5684abf7020dfc5f0b6ba1d68eda3663871fce52 upstream. iptunnel_xmit() works as a common function, also used by a udp tunnel which doesn't have to have a tunnel device, like how TIPC works with udp media. In these cases, we should allow not to count pkts on dev's tstats, so that udp tunnel can work with no tunnel device safely. Signed-off-by: Xin Long <lucien.xin@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net> Cc: Tommi Rantala <tommi.t.rantala@nokia.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net')
-rw-r--r--net/ipv4/ip_tunnel_core.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/net/ipv4/ip_tunnel_core.c b/net/ipv4/ip_tunnel_core.c
index c248e0dccbe1..67ef9d853d90 100644
--- a/net/ipv4/ip_tunnel_core.c
+++ b/net/ipv4/ip_tunnel_core.c
@@ -89,9 +89,12 @@ void iptunnel_xmit(struct sock *sk, struct rtable *rt, struct sk_buff *skb,
__ip_select_ident(net, iph, skb_shinfo(skb)->gso_segs ?: 1);
err = ip_local_out(net, sk, skb);
- if (unlikely(net_xmit_eval(err)))
- pkt_len = 0;
- iptunnel_xmit_stats(dev, pkt_len);
+
+ if (dev) {
+ if (unlikely(net_xmit_eval(err)))
+ pkt_len = 0;
+ iptunnel_xmit_stats(dev, pkt_len);
+ }
}
EXPORT_SYMBOL_GPL(iptunnel_xmit);