aboutsummaryrefslogtreecommitdiff
path: root/sys/opencrypto
diff options
context:
space:
mode:
authorPawel Jakub Dawidek <pjd@FreeBSD.org>2006-06-06 15:04:52 +0000
committerPawel Jakub Dawidek <pjd@FreeBSD.org>2006-06-06 15:04:52 +0000
commit0d5c337befafc91cdf31bf26bd18a665b66099f6 (patch)
treeb45f354eea69869019ec349b4841357dd477ed8d /sys/opencrypto
parente6c37eb63266985e8619b7d5f49565ace4bd5832 (diff)
downloadsrc-0d5c337befafc91cdf31bf26bd18a665b66099f6.tar.gz
src-0d5c337befafc91cdf31bf26bd18a665b66099f6.zip
When DIAGNOSTIC is defined, verify if we don't free crypto requests from
the crypto queue or from the return queue.
Notes
Notes: svn path=/head/; revision=159346
Diffstat (limited to 'sys/opencrypto')
-rw-r--r--sys/opencrypto/crypto.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/sys/opencrypto/crypto.c b/sys/opencrypto/crypto.c
index fbf039fa38d2..e75af741bf37 100644
--- a/sys/opencrypto/crypto.c
+++ b/sys/opencrypto/crypto.c
@@ -903,6 +903,27 @@ crypto_freereq(struct cryptop *crp)
if (crp == NULL)
return;
+#ifdef DIAGNOSTIC
+ {
+ struct cryptop *crp2;
+
+ CRYPTO_Q_LOCK();
+ TAILQ_FOREACH(crp2, &crp_q, crp_next) {
+ KASSERT(crp2 != crp,
+ ("Freeing cryptop from the crypto queue (%p).",
+ crp));
+ }
+ CRYPTO_Q_UNLOCK();
+ CRYPTO_RETQ_LOCK();
+ TAILQ_FOREACH(crp2, &crp_ret_q, crp_next) {
+ KASSERT(crp2 != crp,
+ ("Freeing cryptop from the return queue (%p).",
+ crp));
+ }
+ CRYPTO_RETQ_UNLOCK();
+ }
+#endif
+
while ((crd = crp->crp_desc) != NULL) {
crp->crp_desc = crd->crd_next;
uma_zfree(cryptodesc_zone, crd);