diff options
author | Pawel Jakub Dawidek <pjd@FreeBSD.org> | 2006-06-06 15:04:52 +0000 |
---|---|---|
committer | Pawel Jakub Dawidek <pjd@FreeBSD.org> | 2006-06-06 15:04:52 +0000 |
commit | 0d5c337befafc91cdf31bf26bd18a665b66099f6 (patch) | |
tree | b45f354eea69869019ec349b4841357dd477ed8d /sys/opencrypto | |
parent | e6c37eb63266985e8619b7d5f49565ace4bd5832 (diff) | |
download | src-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.c | 21 |
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); |