[Openvpn-devel,ovpn-net,v2] ovpn: fix incorrect use of rcu_access_pointer()

Message ID 20260724014926.102443-1-qingfang.deng@linux.dev
State New
Headers
Series [Openvpn-devel,ovpn-net,v2] ovpn: fix incorrect use of rcu_access_pointer() |

Commit Message

Qingfang Deng July 24, 2026, 1:49 a.m. UTC
  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>
---
v2: use rcu_dereference_bh() to make lockdep happy

 drivers/net/ovpn/peer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Patch

diff --git a/drivers/net/ovpn/peer.c b/drivers/net/ovpn/peer.c
index a21d02ac715e..bb3d409b9f1c 100644
--- a/drivers/net/ovpn/peer.c
+++ b/drivers/net/ovpn/peer.c
@@ -1165,7 +1165,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;