From: Jay Vosburgh <jay.vosburgh@canonical.com>
To: Eric Dumazet <edumazet@google.com>
Cc: "David S . Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Andy Gospodarek <andy@greyhouse.net>,
netdev@vger.kernel.org, eric.dumazet@gmail.com
Subject: Re: [PATCH net-next 1/3] bonding: no longer use RTNL in bonding_show_bonds()
Date: Tue, 09 Apr 2024 13:37:14 -0700 [thread overview]
Message-ID: <17332.1712695034@famine> (raw)
In-Reply-To: <20240408190437.2214473-2-edumazet@google.com>
Eric Dumazet <edumazet@google.com> wrote:
>netdev structures are already RCU protected.
>
>Change bond_init() and bond_uninit() to use RCU
>enabled list_add_tail_rcu() and list_del_rcu().
>
>Then bonding_show_bonds() can use rcu_read_lock()
>while iterating through bn->dev_list.
>
>Signed-off-by: Eric Dumazet <edumazet@google.com>
Acked-by: Jay Vosburgh <jay.vosburgh@canonical.com>
>---
> drivers/net/bonding/bond_main.c | 4 ++--
> drivers/net/bonding/bond_sysfs.c | 8 ++++----
> 2 files changed, 6 insertions(+), 6 deletions(-)
>
>diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
>index c9f0415f780ab0a9ecb26424795695eff951421a..08e9bdbf450afdc103931249259c58a08665dc02 100644
>--- a/drivers/net/bonding/bond_main.c
>+++ b/drivers/net/bonding/bond_main.c
>@@ -5933,7 +5933,7 @@ static void bond_uninit(struct net_device *bond_dev)
>
> bond_set_slave_arr(bond, NULL, NULL);
>
>- list_del(&bond->bond_list);
>+ list_del_rcu(&bond->bond_list);
>
> bond_debug_unregister(bond);
> }
>@@ -6347,7 +6347,7 @@ static int bond_init(struct net_device *bond_dev)
> spin_lock_init(&bond->stats_lock);
> netdev_lockdep_set_classes(bond_dev);
>
>- list_add_tail(&bond->bond_list, &bn->dev_list);
>+ list_add_tail_rcu(&bond->bond_list, &bn->dev_list);
>
> bond_prepare_sysfs_group(bond);
>
>diff --git a/drivers/net/bonding/bond_sysfs.c b/drivers/net/bonding/bond_sysfs.c
>index 2805135a7205ba444ccaf412df33f621f55a729a..9132033f85fb0e33093e97c55f885a997c95cb4a 100644
>--- a/drivers/net/bonding/bond_sysfs.c
>+++ b/drivers/net/bonding/bond_sysfs.c
>@@ -37,12 +37,12 @@ static ssize_t bonding_show_bonds(const struct class *cls,
> {
> const struct bond_net *bn =
> container_of_const(attr, struct bond_net, class_attr_bonding_masters);
>- int res = 0;
> struct bonding *bond;
>+ int res = 0;
>
>- rtnl_lock();
>+ rcu_read_lock();
>
>- list_for_each_entry(bond, &bn->dev_list, bond_list) {
>+ list_for_each_entry_rcu(bond, &bn->dev_list, bond_list) {
> if (res > (PAGE_SIZE - IFNAMSIZ)) {
> /* not enough space for another interface name */
> if ((PAGE_SIZE - res) > 10)
>@@ -55,7 +55,7 @@ static ssize_t bonding_show_bonds(const struct class *cls,
> if (res)
> buf[res-1] = '\n'; /* eat the leftover space */
>
>- rtnl_unlock();
>+ rcu_read_unlock();
> return res;
> }
>
>--
>2.44.0.478.gd926399ef9-goog
>
>
next prev parent reply other threads:[~2024-04-09 20:37 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-08 19:04 [PATCH net-next 0/3] bonding: remove RTNL from three sysfs files Eric Dumazet
2024-04-08 19:04 ` [PATCH net-next 1/3] bonding: no longer use RTNL in bonding_show_bonds() Eric Dumazet
2024-04-09 20:37 ` Jay Vosburgh [this message]
2024-04-08 19:04 ` [PATCH net-next 2/3] bonding: no longer use RTNL in bonding_show_slaves() Eric Dumazet
2024-04-09 20:37 ` Jay Vosburgh
2024-04-08 19:04 ` [PATCH net-next 3/3] bonding: no longer use RTNL in bonding_show_queue_id() Eric Dumazet
2024-04-09 20:39 ` Jay Vosburgh
2024-04-09 20:47 ` Eric Dumazet
2024-04-09 20:53 ` Jay Vosburgh
2024-04-10 0:40 ` [PATCH net-next 0/3] bonding: remove RTNL from three sysfs files patchwork-bot+netdevbpf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=17332.1712695034@famine \
--to=jay.vosburgh@canonical.com \
--cc=andy@greyhouse.net \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=eric.dumazet@gmail.com \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.