Module Name: src
Committed By: riastradh
Date: Sun May 22 11:39:54 UTC 2022
Modified Files:
src/sys/opencrypto: crypto.c
Log Message:
opencrypto: Assert nonnull callback up front in crypto_dispatch.
Same with crypto_kdispatch.
Convert some dead branches downstream to assertions too.
To generate a diff of this commit:
cvs rdiff -u -r1.125 -r1.126 src/sys/opencrypto/crypto.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/opencrypto/crypto.c
diff -u src/sys/opencrypto/crypto.c:1.125 src/sys/opencrypto/crypto.c:1.126
--- src/sys/opencrypto/crypto.c:1.125 Sun May 22 11:39:37 2022
+++ src/sys/opencrypto/crypto.c Sun May 22 11:39:54 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: crypto.c,v 1.125 2022/05/22 11:39:37 riastradh Exp $ */
+/* $NetBSD: crypto.c,v 1.126 2022/05/22 11:39:54 riastradh Exp $ */
/* $FreeBSD: src/sys/opencrypto/crypto.c,v 1.4.2.5 2003/02/26 00:14:05 sam Exp $ */
/* $OpenBSD: crypto.c,v 1.41 2002/07/17 23:52:38 art Exp $ */
@@ -53,7 +53,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: crypto.c,v 1.125 2022/05/22 11:39:37 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: crypto.c,v 1.126 2022/05/22 11:39:54 riastradh Exp $");
#include <sys/param.h>
#include <sys/reboot.h>
@@ -1283,6 +1283,7 @@ crypto_dispatch(struct cryptop *crp)
struct crypto_crp_q *crp_q;
KASSERT(crp != NULL);
+ KASSERT(crp->crp_callback != NULL);
KASSERT(crp->crp_desc != NULL);
KASSERT(crp->crp_buf != NULL);
KASSERT(!cpu_intr_p());
@@ -1395,6 +1396,7 @@ crypto_kdispatch(struct cryptkop *krp)
struct crypto_crp_kq *crp_kq;
KASSERT(krp != NULL);
+ KASSERT(krp->krp_callback != NULL);
KASSERT(!cpu_intr_p());
cryptostats.cs_kops++;
@@ -1462,15 +1464,9 @@ crypto_kinvoke(struct cryptkop *krp, int
int error;
KASSERT(krp != NULL);
+ KASSERT(krp->krp_callback != NULL);
KASSERT(!cpu_intr_p());
- /* Sanity checks. */
- if (krp->krp_callback == NULL) {
- cv_destroy(&krp->krp_cv);
- crypto_kfreereq(krp);
- return EINVAL;
- }
-
mutex_enter(&crypto_drv_mtx);
for (hid = 0; hid < crypto_drivers_num; hid++) {
cap = crypto_checkdriver(hid);
@@ -1548,21 +1544,14 @@ crypto_invoke(struct cryptop *crp, int h
struct cryptocap *cap;
KASSERT(crp != NULL);
+ KASSERT(crp->crp_callback != NULL);
+ KASSERT(crp->crp_desc != NULL);
KASSERT(!cpu_intr_p());
#ifdef CRYPTO_TIMING
if (crypto_timing)
crypto_tstat(&cryptostats.cs_invoke, &crp->crp_tstamp);
#endif
- /* Sanity checks. */
- if (crp->crp_callback == NULL) {
- return EINVAL;
- }
- if (crp->crp_desc == NULL) {
- crp->crp_etype = EINVAL;
- crypto_done(crp);
- return 0;
- }
cap = crypto_checkdriver_lock(CRYPTO_SESID2HID(crp->crp_sid));
if (cap != NULL && (cap->cc_flags & CRYPTOCAP_F_CLEANUP) == 0) {