https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=276392
--- Comment #2 from Aaron LI <[email protected]> ---
Yes, it should be a read lock, and that’s why I use RA_LOCKED in the added
rw_assert(). I made a typo in the previous patch. Thanks.
--- wg_noise.c.orig 2024-01-16 22:53:33.518906792 +0800
+++ wg_noise.c 2024-01-16 23:21:16.069687841 +0800
@@ -281,6 +281,8 @@ noise_local_keys(struct noise_local *l,
static void
noise_precompute_ss(struct noise_local *l, struct noise_remote *r)
{
+ rw_assert(&l->l_identity_lock, RA_LOCKED);
+
rw_wlock(&r->r_handshake_lock);
if (!l->l_has_identity ||
!curve25519(r->r_ss, l->l_private, r->r_public))
@@ -302,7 +304,10 @@ noise_remote_alloc(struct noise_local *l
r->r_handshake_state = HANDSHAKE_DEAD;
r->r_last_sent = TIMER_RESET;
r->r_last_init_recv = TIMER_RESET;
+
+ rw_rlock(&l->l_identity_lock);
noise_precompute_ss(l, r);
+ rw_runlock(&l->l_identity_lock);
refcount_init(&r->r_refcnt, 1);
r->r_local = noise_local_ref(l);
--
You are receiving this mail because:
You are the assignee for the bug.
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.