summaryrefslogtreecommitdiffstatshomepage
path: root/src/config.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/config.c9
1 files changed, 1 insertions, 8 deletions
diff --git a/src/config.c b/src/config.c
index 4ca33ce..7f217ff 100644
--- a/src/config.c
+++ b/src/config.c
@@ -70,16 +70,9 @@ static int set_peer(struct wireguard_device *wg, void __user *user_peer, size_t
if (!peer) { /* Peer doesn't exist yet. Add a new one. */
if (in_peer.remove_me)
return -ENODEV; /* Tried to remove a non existing peer. */
- peer = peer_create(wg, in_peer.public_key);
+ peer = peer_rcu_get(peer_create(wg, in_peer.public_key));
if (!peer)
return -ENOMEM;
- rcu_read_lock();
- peer = peer_get(peer);
- rcu_read_unlock();
- if (!peer) {
- pr_err("Peer disappeared while creating\n");
- return -EAGAIN;
- }
if (netdev_pub(wg)->flags & IFF_UP)
timers_init_peer(peer);
} else