diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2017-11-17 11:48:18 +0100 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2017-11-17 11:48:18 +0100 |
commit | 1a097249c55f4dbede0e7a256d3c473c7effbade (patch) | |
tree | 9c75017306db98f1d794bb2f4dbc6c795f3e8d54 | |
parent | 6ed6b2e1c4bbf6f5ce234eb10d16f25923351571 (diff) |
device: uninitialize socket first in destruction
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
-rw-r--r-- | src/device.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/device.c b/src/device.c index 12c11fb..1b3ab4f 100644 --- a/src/device.c +++ b/src/device.c @@ -208,8 +208,9 @@ static void destruct(struct net_device *dev) list_del(&wg->device_list); rtnl_unlock(); mutex_lock(&wg->device_update_lock); - peer_remove_all(wg); /* The final references are cleared in the below calls to destroy_workqueue. */ wg->incoming_port = 0; + socket_reinit(wg, NULL, NULL); + peer_remove_all(wg); /* The final references are cleared in the below calls to destroy_workqueue. */ destroy_workqueue(wg->handshake_receive_wq); destroy_workqueue(wg->handshake_send_wq); packet_queue_free(&wg->decrypt_queue, true); @@ -220,7 +221,6 @@ static void destruct(struct net_device *dev) ratelimiter_uninit(); memzero_explicit(&wg->static_identity, sizeof(struct noise_static_identity)); skb_queue_purge(&wg->incoming_handshakes); - socket_reinit(wg, NULL, NULL); free_percpu(dev->tstats); free_percpu(wg->incoming_handshakes_worker); if (wg->have_creating_net_ref) |