Message ID | 20250131171334.1172661-1-edumazet@google.com (mailing list archive) |
---|---|
Headers | show |
Series | net: first round to use dev_net_rcu() | expand |
On Fri, 31 Jan 2025 17:13:18 +0000 Eric Dumazet wrote:
> ipv4: use RCU protection in inet_select_addr()
patchwork thinks it's an incomplete series due to lack of this patch
on the list. I'm afraid a repost will be needed :(
On Sun, Feb 2, 2025 at 3:18 AM Jakub Kicinski <kuba@kernel.org> wrote: > > On Fri, 31 Jan 2025 17:13:18 +0000 Eric Dumazet wrote: > > ipv4: use RCU protection in inet_select_addr() > > patchwork thinks it's an incomplete series due to lack of this patch > on the list. I'm afraid a repost will be needed :( Interesting, I wonder what happened... I will send a v2, here what it looks like: commit 52a1dc65d01230876fbacc7f8fe63ee7a758603f (HEAD) Author: Eric Dumazet <edumazet@google.com> Date: Fri Jan 31 16:47:50 2025 +0000 ipv4: use RCU protection in inet_select_addr() inet_select_addr() must use RCU protection to make sure the net structure it reads does not disappear. Fixes: c4544c724322 ("[NETNS]: Process inet_select_addr inside a namespace.") Signed-off-by: Eric Dumazet <edumazet@google.com> diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c index c8b3cf5fba4c02941b919687a6a657cf68f5f99a..55b8151759bc9f76ebdbfae27544d6ee666a4809 100644 --- a/net/ipv4/devinet.c +++ b/net/ipv4/devinet.c @@ -1371,10 +1371,11 @@ __be32 inet_select_addr(const struct net_device *dev, __be32 dst, int scope) __be32 addr = 0; unsigned char localnet_scope = RT_SCOPE_HOST; struct in_device *in_dev; - struct net *net = dev_net(dev); + struct net *net; int master_idx; rcu_read_lock(); + net = dev_net_rcu(dev); in_dev = __in_dev_get_rcu(dev); if (!in_dev) goto no_in_dev;