2025-03-18, 02:40:41 +0100, Antonio Quartulli wrote:
+void ovpn_socket_release(struct ovpn_peer *peer)
+{
+ struct ovpn_socket *sock;
+
+ might_sleep();
+
+ /* release may be invoked after socket was detached */
+ rcu_read_lock();
+ sock = rcu_dereference_protected(peer->sock, true);
+ if (!sock) {
+ rcu_read_unlock();
+ return;
+ }
+ rcu_assign_pointer(peer->sock, NULL);
minor nit: that could be rcu_replace_pointer instead of rcu_deref + rcu_assign_pointer
(and I don't think the rcu_read_lock does much here)