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 /src | |
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.
Diffstat (limited to 'src')
-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); |