Re: [PATCH net-next v5 23/25] ovpn: notify userspace when a peer is deleted
From: Sabrina Dubroca <sd@queasysnail.net>
Date: 2024-07-17 10:54:17
2024-06-27, 15:08:41 +0200, Antonio Quartulli wrote:
quoted hunk ↗ jump to hunk
diff --git a/drivers/net/ovpn/peer.c b/drivers/net/ovpn/peer.c index 2105bcc981fa..23418204fa8e 100644 --- a/drivers/net/ovpn/peer.c +++ b/drivers/net/ovpn/peer.c@@ -273,6 +273,7 @@ void ovpn_peer_release_kref(struct kref *kref) ovpn_peer_release(peer); netdev_put(peer->ovpn->dev, NULL);
I don't think you can access peer->ovpn once you release that reference, if this peer was holding the last reference the netdev (and the ovpn struct) could be gone while we're accessing it in ovpn_nl_notify_del_peer.
quoted hunk ↗ jump to hunk
+ ovpn_nl_notify_del_peer(peer); kfree_rcu(peer, rcu); }diff --git a/drivers/net/ovpn/peer.h b/drivers/net/ovpn/peer.h index 8d24a8fdd03e..971603a70090 100644 --- a/drivers/net/ovpn/peer.h +++ b/drivers/net/ovpn/peer.h@@ -129,6 +129,7 @@ static inline bool ovpn_peer_hold(struct ovpn_peer *peer) void ovpn_peer_release(struct ovpn_peer *peer); void ovpn_peer_release_kref(struct kref *kref); +void ovpn_peer_release(struct ovpn_peer *peer);
nit: dupe of 2 lines before -- Sabrina