]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ovpn: fix incorrect use of rcu_access_pointer()
authorQingfang Deng <qingfang.deng@linux.dev>
Fri, 24 Jul 2026 01:49:26 +0000 (09:49 +0800)
committerAntonio Quartulli <antonio@openvpn.net>
Thu, 30 Jul 2026 09:28:30 +0000 (11:28 +0200)
rcu_access_pointer() should only be used to test the value of a pointer,
not to dereference it. As it's in a spin_lock_bh() critical section, use
rcu_dereference_bh() instead, avoiding an extra rcu_read_lock().

Fixes: f6226ae7a0cd ("ovpn: introduce the ovpn_socket object")
Signed-off-by: Qingfang Deng <qingfang.deng@linux.dev>
Signed-off-by: Antonio Quartulli <antonio@openvpn.net>
drivers/net/ovpn/peer.c

index eada414a9d92266fe4cbf89855666bee9062db70..b0519f9840d830a397850e884db633866c98916b 100644 (file)
@@ -1249,7 +1249,7 @@ static void ovpn_peer_release_p2p(struct ovpn_priv *ovpn, struct sock *sk,
        }
 
        if (sk) {
-               ovpn_sock = rcu_access_pointer(peer->sock);
+               ovpn_sock = rcu_dereference_bh(peer->sock);
                if (!ovpn_sock || ovpn_sock->sk != sk) {
                        spin_unlock_bh(&ovpn->lock);
                        return;