crypto: cryptd - move kcrypto_wq into cryptd
Subsystems (2)
PATCH 1/1 crypto: cryptd - move kcrypto_wq into cryptd
From: Eric Biggers <[email protected]>
kcrypto_wq is only used by cryptd, so move it into cryptd.c and change the workqueue name from "crypto" to "cryptd".
Signed-off-by Eric Biggers <[email protected]>
--- crypto/Kconfig | 5 ---- crypto/Makefile | 2 -- crypto/cryptd.c | 24 ++++++++++++---- crypto/crypto_wq.c | 40 -------------------------- drivers/crypto/cavium/cpt/cptvf_algs.c | 1 - include/crypto/crypto_wq.h | 8 ------ 6 files changed, 19 insertions(+), 61 deletions(-) delete mode 100644 crypto/crypto_wq.c delete mode 100644 include/crypto/crypto_wq.h
crypto/Kconfig +0 -5
@@ -61,7 +61,6 @@ config CRYPTO_BLKCIPHER2 tristate select CRYPTO_ALGAPI2 select CRYPTO_RNG2 - select CRYPTO_WORKQUEUE config CRYPTO_HASH tristate
@@ -183,15 +182,11 @@ config CRYPTO_PCRYPT This converts an arbitrary crypto algorithm into a parallel algorithm that executes in kernel threads. -config CRYPTO_WORKQUEUE - tristate - config CRYPTO_CRYPTD tristate "Software async crypto daemon" select CRYPTO_BLKCIPHER select CRYPTO_HASH select CRYPTO_MANAGER - select CRYPTO_WORKQUEUE help This is a generic software asynchronous crypto daemon that converts an arbitrary synchronous software crypto algorithm
crypto/Makefile +0 -2
@@ -6,8 +6,6 @@ obj-$(CONFIG_CRYPTO) += crypto.o crypto-y := api.o cipher.o compress.o memneq.o -obj-$(CONFIG_CRYPTO_WORKQUEUE) += crypto_wq.o - obj-$(CONFIG_CRYPTO_ENGINE) += crypto_engine.o obj-$(CONFIG_CRYPTO_FIPS) += fips.o
crypto/cryptd.c +19 -5
@@ -21,7 +21,6 @@#include <crypto/internal/aead.h> #include <crypto/internal/skcipher.h> #include <crypto/cryptd.h> -#include <crypto/crypto_wq.h> #include <linux/atomic.h> #include <linux/err.h> #include <linux/init.h>
@@ -31,11 +30,14 @@#include <linux/scatterlist.h> #include <linux/sched.h> #include <linux/slab.h> +#include <linux/workqueue.h> static unsigned int cryptd_max_cpu_qlen =1000 ;module_param (cryptd_max_cpu_qlen, uint,0 );MODULE_PARM_DESC (cryptd_max_cpu_qlen,"Set cryptd Max queue depth" ); +static struct workqueue_struct *cryptd_wq; +struct cryptd_cpu_queue {struct crypto_queue queue;struct work_struct work;
@@ -141,7 +143,7 @@ static int cryptd_enqueue_request(struct cryptd_queue *queue,if (err == -ENOSPC ) goto out_put_cpu; -queue_work_on (cpu, kcrypto_wq, &cpu_queue->work); +queue_work_on (cpu, cryptd_wq, &cpu_queue->work);if (!atomic_read (refcnt)) goto out_put_cpu;
@@ -184,7 +186,7 @@ static void cryptd_queue_worker(struct work_struct *work) req->complete (req,0 );if (cpu_queue->queue.qlen) -queue_work (kcrypto_wq, &cpu_queue->work); +queue_work (cryptd_wq, &cpu_queue->work); }static inline struct cryptd_queue *cryptd_get_queue (struct crypto_tfm *tfm)
@@ -1123,19 +1125,31 @@ static int __init cryptd_init(void) {int err; + cryptd_wq =alloc_workqueue ("cryptd" ,WQ_MEM_RECLAIM |WQ_CPU_INTENSIVE , +1 ); +if (!cryptd_wq) +return -ENOMEM ; + err =cryptd_init_queue (&queue, cryptd_max_cpu_qlen);if (err) -return err; + goto err_destroy_wq; err =crypto_register_template (&cryptd_tmpl);if (err) -cryptd_fini_queue (&queue); + goto err_fini_queue; +return 0 ; + +err_fini_queue: +cryptd_fini_queue (&queue); +err_destroy_wq: +destroy_workqueue (cryptd_wq);return err; } static void __exit cryptd_exit(void) { +destroy_workqueue (cryptd_wq);cryptd_fini_queue (&queue);crypto_unregister_template (&cryptd_tmpl); }
crypto/crypto_wq.c deleted +0 -40
@@ -1,40 +0,0 @@ -/* -* Workqueue for crypto subsystem -* -* Copyright (c) 2009 Intel Corp. -* Author: Huang Ying <[email protected]> -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the Free -* Software Foundation; either version 2 of the License, or (at your option) -* any later version. -* -*/ - -#include <linux/workqueue.h> -#include <linux/module.h> -#include <crypto/algapi.h> -#include <crypto/crypto_wq.h> - -struct workqueue_struct *kcrypto_wq; -EXPORT_SYMBOL_GPL (kcrypto_wq); - -static int __init crypto_wq_init (void ) -{ - kcrypto_wq =alloc_workqueue ("crypto" , -WQ_MEM_RECLAIM |WQ_CPU_INTENSIVE ,1 ); -if (unlikely (!kcrypto_wq)) -return -ENOMEM ; -return 0 ; -} - -static void __exit crypto_wq_exit(void) -{ -destroy_workqueue (kcrypto_wq); -} - -subsys_initcall (crypto_wq_init); -module_exit (crypto_wq_exit); - -MODULE_LICENSE ("GPL" ); -MODULE_DESCRIPTION ("Workqueue for crypto subsystem" );
drivers/crypto/cavium/cpt/cptvf_algs.c +0 -1
@@ -10,7 +10,6 @@#include <crypto/aes.h> #include <crypto/algapi.h> #include <crypto/authenc.h> -#include <crypto/crypto_wq.h> #include <crypto/des.h> #include <crypto/xts.h> #include <linux/crypto.h>
include/crypto/crypto_wq.h deleted +0 -8
@@ -1,8 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -#ifndef CRYPTO_WQ_H -#define CRYPTO_WQ_H - -#include <linux/workqueue.h> - -extern struct workqueue_struct *kcrypto_wq; -#endif
Signature · 1 line
2.21.0.1020.gf2820cf01a-goog
Herbert Xu
maintainerQuoted 6 lines · Eric Biggers
From: Eric Biggers <[email protected]>
kcrypto_wqis only used by cryptd, so move it intocryptd.cand change the workqueue name from "crypto" to "cryptd".Signed-off-by Eric Biggers <[email protected]>
Quoted 10 lines
--- crypto/Kconfig | 5 ---- crypto/Makefile | 2 -- crypto/cryptd.c | 24 ++++++++++++---- crypto/crypto_wq.c | 40 -------------------------- drivers/crypto/cavium/cpt/cptvf_algs.c | 1 - include/crypto/crypto_wq.h | 8 ------ 6 files changed, 19 insertions(+), 61 deletions(-) delete mode 100644 crypto/crypto_wq.c delete mode 100644 include/crypto/crypto_wq.h
Patch applied. Thanks.
Signature · 3 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt