diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2016-06-29 23:44:53 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2016-06-30 02:58:39 +0200 |
commit | af25f7df36686fe09b9aa276fd168497b77eb5e9 (patch) | |
tree | 8922ec6d716fed00cd629c834217e0f7d909d645 | |
parent | chacha20poly1305: use more standard way of testing FPU features (diff) | |
download | wireguard-monolithic-historical-af25f7df36686fe09b9aa276fd168497b77eb5e9.tar.xz wireguard-monolithic-historical-af25f7df36686fe09b9aa276fd168497b77eb5e9.zip |
device init: free wq after padata
The padata free functions make reference to their parent workqueue, so
it's important that we wait to free the workqueue after the padata.
-rw-r--r-- | src/device.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/device.c b/src/device.c index 31fae5b..ccb0af4 100644 --- a/src/device.c +++ b/src/device.c @@ -199,9 +199,9 @@ static void destruct(struct net_device *dev) wg->incoming_port = 0; destroy_workqueue(wg->workqueue); #ifdef CONFIG_WIREGUARD_PARALLEL - destroy_workqueue(wg->parallelqueue); padata_free(wg->parallel_send); padata_free(wg->parallel_receive); + destroy_workqueue(wg->parallelqueue); #endif routing_table_free(&wg->peer_routing_table); memzero_explicit(&wg->static_identity, sizeof(struct noise_static_identity)); @@ -308,12 +308,12 @@ err: if (wg->workqueue) destroy_workqueue(wg->workqueue); #ifdef CONFIG_WIREGUARD_PARALLEL - if (wg->parallelqueue) - destroy_workqueue(wg->parallelqueue); if (wg->parallel_send) padata_free(wg->parallel_send); if (wg->parallel_receive) padata_free(wg->parallel_receive); + if (wg->parallelqueue) + destroy_workqueue(wg->parallelqueue); #endif if (wg->cookie_checker.device) cookie_checker_uninit(&wg->cookie_checker); |