summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris J Arges <carges@cloudflare.com>2026-04-08 22:10:47 +0300
committerJakub Kicinski <kuba@kernel.org>2026-04-12 19:05:02 +0300
commitb258cba1e05df758e4e99a0e374da3e044618475 (patch)
tree282a92474d48ae0d24bf80e383d64d83dd9ac8a5
parentcea470a6944f6e0b07780ec9d9d3d8b97279b2c3 (diff)
downloadlinux-b258cba1e05df758e4e99a0e374da3e044618475.tar.xz
net: Add net_cookie to Dead loop messages
Network devices can have the same name within different network namespaces. To help distinguish these devices, add the net_cookie value which can be used to identify the netns. Signed-off-by: Chris J Arges <carges@cloudflare.com> Link: https://patch.msgid.link/20260408191056.1036330-1-carges@cloudflare.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-rw-r--r--net/core/dev.c5
-rw-r--r--net/ipv4/ip_tunnel_core.c4
2 files changed, 5 insertions, 4 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index e7bc95cbd1fa..ccc4418b3163 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -4894,8 +4894,9 @@ int __dev_queue_xmit(struct sk_buff *skb, struct net_device *sb_dev)
} else {
/* Recursion is detected! It is possible unfortunately. */
recursion_alert:
- net_crit_ratelimited("Dead loop on virtual device %s, fix it urgently!\n",
- dev->name);
+ net_crit_ratelimited("Dead loop on virtual device %s (net %llu), fix it urgently!\n",
+ dev->name, dev_net(dev)->net_cookie);
+
rc = -ENETDOWN;
}
diff --git a/net/ipv4/ip_tunnel_core.c b/net/ipv4/ip_tunnel_core.c
index f430d6f0463e..2667f53482bd 100644
--- a/net/ipv4/ip_tunnel_core.c
+++ b/net/ipv4/ip_tunnel_core.c
@@ -60,8 +60,8 @@ void iptunnel_xmit(struct sock *sk, struct rtable *rt, struct sk_buff *skb,
if (unlikely(dev_recursion_level() > IP_TUNNEL_RECURSION_LIMIT)) {
if (dev) {
- net_crit_ratelimited("Dead loop on virtual device %s, fix it urgently!\n",
- dev->name);
+ net_crit_ratelimited("Dead loop on virtual device %s (net %llu), fix it urgently!\n",
+ dev->name, dev_net(dev)->net_cookie);
DEV_STATS_INC(dev, tx_errors);
}
ip_rt_put(rt);