From: Eric Dumazet Date: Fri, 21 Feb 2025 05:12:23 +0000 (+0000) Subject: net-sysfs: restore behavior for not running devices X-Git-Tag: v6.14.9~137 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b6f921694135b44bead77fd08dfa179e8b6cf1a9;p=thirdparty%2Fkernel%2Fstable.git net-sysfs: restore behavior for not running devices [ Upstream commit 75bc3dab4e49b4daccb27ad6ce8ce2fcd253fc1b ] modprobe dummy dumdummies=1 Old behavior : $ cat /sys/class/net/dummy0/carrier cat: /sys/class/net/dummy0/carrier: Invalid argument After blamed commit, an empty string is reported. $ cat /sys/class/net/dummy0/carrier $ In this commit, I restore the old behavior for carrier, speed and duplex attributes. Fixes: 79c61899b5ee ("net-sysfs: remove rtnl_trylock from device attributes") Signed-off-by: Eric Dumazet Reported-by: Marco Leogrande Reviewed-by: Antoine Tenart Link: https://patch.msgid.link/20250221051223.576726-1-edumazet@google.com Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c index 07cb99b114bdd..88e001a4e0810 100644 --- a/net/core/net-sysfs.c +++ b/net/core/net-sysfs.c @@ -232,11 +232,12 @@ static ssize_t carrier_show(struct device *dev, struct device_attribute *attr, char *buf) { struct net_device *netdev = to_net_dev(dev); - int ret = -EINVAL; + int ret; if (!rtnl_trylock()) return restart_syscall(); + ret = -EINVAL; if (netif_running(netdev)) { /* Synchronize carrier state with link watch, * see also rtnl_getlink(). @@ -266,6 +267,7 @@ static ssize_t speed_show(struct device *dev, if (!rtnl_trylock()) return restart_syscall(); + ret = -EINVAL; if (netif_running(netdev)) { struct ethtool_link_ksettings cmd; @@ -292,6 +294,7 @@ static ssize_t duplex_show(struct device *dev, if (!rtnl_trylock()) return restart_syscall(); + ret = -EINVAL; if (netif_running(netdev)) { struct ethtool_link_ksettings cmd;