Message ID | 20240408190437.2214473-3-edumazet@google.com (mailing list archive) |
---|---|
State | Accepted |
Commit | d67fed98caa1f3c517fd6af7b8f044d05f9e3e5d |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | bonding: remove RTNL from three sysfs files | expand |
Eric Dumazet <edumazet@google.com> wrote: >Slave devices are already RCU protected, simply >switch to bond_for_each_slave_rcu(), > >Signed-off-by: Eric Dumazet <edumazet@google.com> Acked-by: Jay Vosburgh <jay.vosburgh@canonical.com> >--- > drivers/net/bonding/bond_sysfs.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > >diff --git a/drivers/net/bonding/bond_sysfs.c b/drivers/net/bonding/bond_sysfs.c >index 9132033f85fb0e33093e97c55f885a997c95cb4a..75ee7ca369034ef6fa58fc9399b566dd7044fedc 100644 >--- a/drivers/net/bonding/bond_sysfs.c >+++ b/drivers/net/bonding/bond_sysfs.c >@@ -170,10 +170,9 @@ static ssize_t bonding_show_slaves(struct device *d, > struct slave *slave; > int res = 0; > >- if (!rtnl_trylock()) >- return restart_syscall(); >+ rcu_read_lock(); > >- bond_for_each_slave(bond, slave, iter) { >+ bond_for_each_slave_rcu(bond, slave, iter) { > if (res > (PAGE_SIZE - IFNAMSIZ)) { > /* not enough space for another interface name */ > if ((PAGE_SIZE - res) > 10) >@@ -184,7 +183,7 @@ static ssize_t bonding_show_slaves(struct device *d, > res += sysfs_emit_at(buf, res, "%s ", slave->dev->name); > } > >- rtnl_unlock(); >+ rcu_read_unlock(); > > if (res) > buf[res-1] = '\n'; /* eat the leftover space */ >-- >2.44.0.478.gd926399ef9-goog > >
diff --git a/drivers/net/bonding/bond_sysfs.c b/drivers/net/bonding/bond_sysfs.c index 9132033f85fb0e33093e97c55f885a997c95cb4a..75ee7ca369034ef6fa58fc9399b566dd7044fedc 100644 --- a/drivers/net/bonding/bond_sysfs.c +++ b/drivers/net/bonding/bond_sysfs.c @@ -170,10 +170,9 @@ static ssize_t bonding_show_slaves(struct device *d, struct slave *slave; int res = 0; - if (!rtnl_trylock()) - return restart_syscall(); + rcu_read_lock(); - bond_for_each_slave(bond, slave, iter) { + bond_for_each_slave_rcu(bond, slave, iter) { if (res > (PAGE_SIZE - IFNAMSIZ)) { /* not enough space for another interface name */ if ((PAGE_SIZE - res) > 10) @@ -184,7 +183,7 @@ static ssize_t bonding_show_slaves(struct device *d, res += sysfs_emit_at(buf, res, "%s ", slave->dev->name); } - rtnl_unlock(); + rcu_read_unlock(); if (res) buf[res-1] = '\n'; /* eat the leftover space */
Slave devices are already RCU protected, simply switch to bond_for_each_slave_rcu(), Signed-off-by: Eric Dumazet <edumazet@google.com> --- drivers/net/bonding/bond_sysfs.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)