From: Eric Dumazet edumazet@google.com
[ 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 edumazet@google.com Reported-by: Marco Leogrande leogrande@google.com Reviewed-by: Antoine Tenart atenart@kernel.org Link: https://patch.msgid.link/20250221051223.576726-1-edumazet@google.com Signed-off-by: Jakub Kicinski kuba@kernel.org Signed-off-by: Sasha Levin sashal@kernel.org --- net/core/net-sysfs.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c index cedbe7d9ae670..474824e88959f 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;