aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/noise.c
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2018-08-02 04:11:52 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2018-08-02 07:40:26 +0200
commitba6f777cbfee4f6aa7b665cc40287685d995bc41 (patch)
tree597dc23dfa69baeb03e3437b98a479a493093f0f /src/noise.c
parentqueueing: ensure strictly ordered loads and stores (diff)
downloadwireguard-monolithic-historical-ba6f777cbfee4f6aa7b665cc40287685d995bc41.tar.xz
wireguard-monolithic-historical-ba6f777cbfee4f6aa7b665cc40287685d995bc41.zip
cookie: returned keypair might disappear if rcu lock not held
And in general it's good to prefer dereferencing entry.peer from a handshake object rather than a keypair object, when possible, since keypairs could disappear before their underlying peer.
Diffstat (limited to 'src/noise.c')
-rw-r--r--src/noise.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/noise.c b/src/noise.c
index c7a55e0..a8f2fa0 100644
--- a/src/noise.c
+++ b/src/noise.c
@@ -637,7 +637,7 @@ bool noise_handshake_begin_session(struct noise_handshake *handshake, struct noi
handshake_zero(handshake);
add_new_keypair(keypairs, new_keypair);
- net_dbg_ratelimited("%s: Keypair %llu created for peer %llu\n", new_keypair->entry.peer->device->dev->name, new_keypair->internal_id, new_keypair->entry.peer->internal_id);
+ net_dbg_ratelimited("%s: Keypair %llu created for peer %llu\n", handshake->entry.peer->device->dev->name, new_keypair->internal_id, handshake->entry.peer->internal_id);
WARN_ON(!index_hashtable_replace(&handshake->entry.peer->device->index_hashtable, &handshake->entry, &new_keypair->entry));
up_write(&handshake->lock);