lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CANn89iLt6E-cSE3QWpg5GPjtNSm4A81EzAFh8YuG8Wkq+UqmeA@mail.gmail.com>
Date: Mon, 3 Feb 2025 11:12:39 +0100
From: Eric Dumazet <edumazet@...gle.com>
To: Jakub Kicinski <kuba@...nel.org>
Cc: "David S . Miller" <davem@...emloft.net>, Paolo Abeni <pabeni@...hat.com>, netdev@...r.kernel.org, 
	Kuniyuki Iwashima <kuniyu@...zon.com>, Simon Horman <horms@...nel.org>, eric.dumazet@...il.com
Subject: Re: [PATCH net 00/16] net: first round to use dev_net_rcu()

On Sun, Feb 2, 2025 at 3:18 AM Jakub Kicinski <kuba@...nel.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@...gle.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@...gle.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;

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ