Re: [PATCH net-next v5 23/25] ovpn: notify userspace when a peer is deleted
From: Antonio Quartulli <antonio@openvpn.net>
Date: 2024-07-17 11:14:54
Hi, On 17/07/2024 12:54, Sabrina Dubroca wrote:
2024-06-27, 15:08:41 +0200, Antonio Quartulli wrote:quoted
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.
I see what you mean. I will move notify_del_peer up above, before the release
quoted
+ 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
ops Thanks!
-- Antonio Quartulli OpenVPN Inc.