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.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
Jason A. Donenfeld 2016-06-29 23:44:53 +02:00
parent 49668ee002
commit 8c9b847669
1 changed files with 3 additions and 3 deletions

View File

@ -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);