From: Donald Hunter <donald.hunter@gmail.com>
To: Eric Dumazet <edumazet@google.com>
Cc: "David S . Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>,
Paolo Abeni <pabeni@redhat.com>,
netdev@vger.kernel.org, Ido Schimmel <idosch@nvidia.com>,
Jiri Pirko <jiri@nvidia.com>,
eric.dumazet@gmail.com
Subject: Re: [PATCH v2 net-next 01/14] rtnetlink: prepare nla_put_iflink() to run under RCU
Date: Fri, 23 Feb 2024 13:29:58 +0000 [thread overview]
Message-ID: <m2wmqvqpex.fsf@gmail.com> (raw)
In-Reply-To: <20240222105021.1943116-2-edumazet@google.com> (Eric Dumazet's message of "Thu, 22 Feb 2024 10:50:08 +0000")
Eric Dumazet <edumazet@google.com> writes:
> We want to be able to run rtnl_fill_ifinfo() under RCU protection
> instead of RTNL in the future.
>
> This patch prepares dev_get_iflink() and nla_put_iflink()
> to run either with RTNL or RCU held.
>
> Signed-off-by: Eric Dumazet <edumazet@google.com>
I notice that several of the *_get_iflink() implementations are wrapped
with rcu_read_lock()/unlock() and many are not. Shouldn't this be done
consistently for all?
e.g.
> diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
> index 7a5be705d71830d5bb3aa26a96a4463df03883a4..6f2a688fccbfb02ae7bdf3d55cca0e77fa9b56b4 100644
> --- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
> +++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
> @@ -1272,10 +1272,10 @@ static int ipoib_get_iflink(const struct net_device *dev)
>
> /* parent interface */
> if (!test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags))
> - return dev->ifindex;
> + return READ_ONCE(dev->ifindex);
>
> /* child/vlan interface */
> - return priv->parent->ifindex;
> + return READ_ONCE(priv->parent->ifindex);
> }
>
> static u32 ipoib_addr_hash(struct ipoib_neigh_hash *htbl, u8 *daddr)
> diff --git a/drivers/net/can/vxcan.c b/drivers/net/can/vxcan.c
> index 98c669ad5141479b509ee924ddba3da6bca554cd..f7fabba707ea640cab8863e63bb19294e333ba2c 100644
> --- a/drivers/net/can/vxcan.c
> +++ b/drivers/net/can/vxcan.c
> @@ -119,7 +119,7 @@ static int vxcan_get_iflink(const struct net_device *dev)
>
> rcu_read_lock();
> peer = rcu_dereference(priv->peer);
> - iflink = peer ? peer->ifindex : 0;
> + iflink = peer ? READ_ONCE(peer->ifindex) : 0;
> rcu_read_unlock();
>
> return iflink;
next prev parent reply other threads:[~2024-02-23 15:25 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-22 10:50 [PATCH v2 net-next 00/14] rtnetlink: reduce RTNL pressure for dumps Eric Dumazet
2024-02-22 10:50 ` [PATCH v2 net-next 01/14] rtnetlink: prepare nla_put_iflink() to run under RCU Eric Dumazet
2024-02-23 13:29 ` Donald Hunter [this message]
2024-02-24 8:21 ` Eric Dumazet
2024-02-24 10:46 ` Donald Hunter
2024-02-24 11:08 ` Eric Dumazet
2024-02-26 8:59 ` Donald Hunter
2024-02-22 10:50 ` [PATCH v2 net-next 02/14] ipv6: prepare inet6_fill_ifla6_attrs() for RCU Eric Dumazet
2024-02-23 14:35 ` Donald Hunter
2024-02-22 10:50 ` [PATCH v2 net-next 03/14] ipv6: prepare inet6_fill_ifinfo() for RCU protection Eric Dumazet
2024-02-22 16:36 ` Jiri Pirko
2024-02-22 16:43 ` Eric Dumazet
2024-02-23 7:19 ` Jiri Pirko
2024-02-22 16:45 ` Eric Dumazet
2024-02-23 7:16 ` Jiri Pirko
2024-02-22 10:50 ` [PATCH v2 net-next 04/14] ipv6: use xarray iterator to implement inet6_dump_ifinfo() Eric Dumazet
2024-02-23 14:42 ` Donald Hunter
2024-02-22 10:50 ` [PATCH v2 net-next 05/14] netlink: fix netlink_diag_dump() return value Eric Dumazet
2024-02-23 12:30 ` Donald Hunter
2024-02-22 10:50 ` [PATCH v2 net-next 06/14] netlink: hold nlk->cb_mutex longer in __netlink_dump_start() Eric Dumazet
2024-02-22 16:20 ` Jiri Pirko
2024-06-09 8:17 ` Tetsuo Handa
2024-06-09 8:29 ` Tetsuo Handa
2024-06-10 12:59 ` Eric Dumazet
2024-06-10 13:21 ` Tetsuo Handa
2024-02-22 10:50 ` [PATCH v2 net-next 07/14] rtnetlink: change nlk->cb_mutex role Eric Dumazet
2024-02-22 10:50 ` [PATCH v2 net-next 08/14] rtnetlink: add RTNL_FLAG_DUMP_UNLOCKED flag Eric Dumazet
2024-02-23 15:19 ` Donald Hunter
2024-02-22 10:50 ` [PATCH v2 net-next 09/14] ipv6: switch inet6_dump_ifinfo() to RCU protection Eric Dumazet
2024-02-23 15:19 ` Donald Hunter
2024-02-22 10:50 ` [PATCH v2 net-next 10/14] inet: allow ip_valid_fib_dump_req() to be called with RTNL or RCU Eric Dumazet
2024-02-23 15:22 ` Donald Hunter
2024-02-22 10:50 ` [PATCH v2 net-next 11/14] nexthop: allow nexthop_mpath_fill_node() to be called without RTNL Eric Dumazet
2024-02-23 15:21 ` Donald Hunter
2024-02-22 10:50 ` [PATCH v2 net-next 12/14] inet: switch inet_dump_fib() to RCU protection Eric Dumazet
2024-02-23 15:25 ` Donald Hunter
2024-02-22 10:50 ` [PATCH v2 net-next 13/14] rtnetlink: make rtnl_fill_link_ifmap() RCU ready Eric Dumazet
2024-02-23 13:03 ` Donald Hunter
2024-02-22 10:50 ` [PATCH v2 net-next 14/14] rtnetlink: provide RCU protection to rtnl_fill_prop_list() Eric Dumazet
2024-02-23 13:03 ` Donald Hunter
2024-02-26 11:50 ` [PATCH v2 net-next 00/14] rtnetlink: reduce RTNL pressure for dumps 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=m2wmqvqpex.fsf@gmail.com \
--to=donald.hunter@gmail.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=eric.dumazet@gmail.com \
--cc=idosch@nvidia.com \
--cc=jiri@nvidia.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).