diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index e163e7a7f5e5c5980c17df64d914e49bd475b7b0..ecdd5e6f216653c303d999eb92f9256f60d0e910 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -4194,6 +4194,8 @@ struct workqueue_struct *alloc_workqueue(const char *fmt,
 	return wq;
 
 err_free_wq:
+	wq_unregister_lockdep(wq);
+	wq_free_lockdep(wq);
 	free_workqueue_attrs(wq->unbound_attrs);
 	kfree(wq);
 	return NULL;