From f1fdd8db6bbf5b31c038ac67e73251c0073269ad Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Fri, 3 Nov 2017 19:38:24 +0100 Subject: device: wait for all peers to be freed before destroying --- src/device.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/device.c') diff --git a/src/device.c b/src/device.c index efd0340..633ae9c 100644 --- a/src/device.c +++ b/src/device.c @@ -215,6 +215,7 @@ static void destruct(struct net_device *dev) packet_queue_free(&wg->decrypt_queue, true); packet_queue_free(&wg->encrypt_queue, true); destroy_workqueue(wg->packet_crypt_wq); + rcu_barrier_bh(); /* Wait for all the peers to be actually freed. */ routing_table_free(&wg->peer_routing_table, &wg->device_update_lock); ratelimiter_uninit(); memzero_explicit(&wg->static_identity, sizeof(struct noise_static_identity)); -- cgit v1.2.3-59-g8ed1b