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.15-rc1~160^2~241 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=75bc3dab4e49b4daccb27ad6ce8ce2fcd253fc1b;p=thirdparty%2Fkernel%2Flinux.git net-sysfs: restore behavior for not running devices 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 --- diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c index 3fe2c521e5740..f61c1d8298119 100644 --- a/net/core/net-sysfs.c +++ b/net/core/net-sysfs.c @@ -313,12 +313,13 @@ 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; ret = sysfs_rtnl_lock(&dev->kobj, &attr->attr, netdev); if (ret) return ret; + ret = -EINVAL; if (netif_running(netdev)) { /* Synchronize carrier state with link watch, * see also rtnl_getlink(). @@ -349,6 +350,7 @@ static ssize_t speed_show(struct device *dev, if (ret) return ret; + ret = -EINVAL; if (netif_running(netdev)) { struct ethtool_link_ksettings cmd; @@ -376,6 +378,7 @@ static ssize_t duplex_show(struct device *dev, if (ret) return ret; + ret = -EINVAL; if (netif_running(netdev)) { struct ethtool_link_ksettings cmd;