From 70439285ad9d5ec8ebdb1cf8617e8f30ea31b2e2 Mon Sep 17 00:00:00 2001 From: Mateusz Guzik Date: Wed, 16 Feb 2022 07:45:12 +0000 Subject: [PATCH] crypto: hide crypto_destroyreq behind a tunable Reviewed by: jhb, markj Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D32084 --- sys/opencrypto/crypto.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/sys/opencrypto/crypto.c b/sys/opencrypto/crypto.c index 0b2c250a7af..fde1316595e 100644 --- a/sys/opencrypto/crypto.c +++ b/sys/opencrypto/crypto.c @@ -202,6 +202,13 @@ SYSCTL_INT(_kern, OID_AUTO, cryptodevallowsoft, CTLFLAG_RWTUN, "Enable/disable use of software crypto by /dev/crypto"); #endif +#ifdef DIAGNOSTIC +bool crypto_destroyreq_check; +SYSCTL_BOOL(_kern_crypto, OID_AUTO, destroyreq_check, CTLFLAG_RWTUN, + &crypto_destroyreq_check, 0, + "Enable checks when destroying a request"); +#endif + MALLOC_DEFINE(M_CRYPTO_DATA, "crypto", "crypto session records"); static void crypto_dispatch_thread(void *arg); @@ -1580,6 +1587,9 @@ crypto_destroyreq(struct cryptop *crp) struct cryptop *crp2; struct crypto_ret_worker *ret_worker; + if (!crypto_destroyreq_check) + return; + CRYPTO_Q_LOCK(); TAILQ_FOREACH(crp2, &crp_q, crp_next) { KASSERT(crp2 != crp,