aboutsummaryrefslogtreecommitdiff
path: root/sys/opencrypto
diff options
context:
space:
mode:
authorKristof Provost <kp@FreeBSD.org>2020-05-11 21:42:19 +0000
committerKristof Provost <kp@FreeBSD.org>2020-05-11 21:42:19 +0000
commit38dc0eac57f3c63ddab63a65cd16be49a4ba4f99 (patch)
treeb96e7135cddbc80c12f52f8474b7247ff1f54b4a /sys/opencrypto
parentb0084bf6cd5b5e9d989000c72af41c5940b49394 (diff)
downloadsrc-38dc0eac57f3c63ddab63a65cd16be49a4ba4f99.tar.gz
src-38dc0eac57f3c63ddab63a65cd16be49a4ba4f99.zip
opencrypto: Add missing ioctl exit SDTs
The opencrypto ioctl code has very useful probe points at the various exit points. These allow us to figure out exactly why a request failed. However, a few paths did not have these probe points. Add them here. Reviewed by: jhb
Notes
Notes: svn path=/head/; revision=360935
Diffstat (limited to 'sys/opencrypto')
-rw-r--r--sys/opencrypto/cryptodev.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/sys/opencrypto/cryptodev.c b/sys/opencrypto/cryptodev.c
index 65b26ac2694d..653c951e2da1 100644
--- a/sys/opencrypto/cryptodev.c
+++ b/sys/opencrypto/cryptodev.c
@@ -465,6 +465,8 @@ cryptof_ioctl(
/* Should always be paired with GCM. */
if (sop->cipher != CRYPTO_AES_NIST_GCM_16) {
CRYPTDEB("GMAC without GCM");
+ SDT_PROBE1(opencrypto, dev, ioctl, error,
+ __LINE__);
return (EINVAL);
}
break;
@@ -539,8 +541,10 @@ cryptof_ioctl(
return (EINVAL);
}
- if (txform == NULL && thash == NULL)
+ if (txform == NULL && thash == NULL) {
+ SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__);
return (EINVAL);
+ }
memset(&csp, 0, sizeof(csp));
@@ -550,13 +554,18 @@ cryptof_ioctl(
case CRYPTO_AES_128_NIST_GMAC:
case CRYPTO_AES_192_NIST_GMAC:
case CRYPTO_AES_256_NIST_GMAC:
- if (sop->keylen != sop->mackeylen)
+ if (sop->keylen != sop->mackeylen) {
+ SDT_PROBE1(opencrypto, dev, ioctl,
+ error, __LINE__);
return (EINVAL);
+ }
break;
#endif
case 0:
break;
default:
+ SDT_PROBE1(opencrypto, dev, ioctl, error,
+ __LINE__);
return (EINVAL);
}
csp.csp_mode = CSP_MODE_AEAD;
@@ -564,14 +573,19 @@ cryptof_ioctl(
switch (sop->mac) {
#ifdef COMPAT_FREEBSD12
case CRYPTO_AES_CCM_CBC_MAC:
- if (sop->keylen != sop->mackeylen)
+ if (sop->keylen != sop->mackeylen) {
+ SDT_PROBE1(opencrypto, dev, ioctl,
+ error, __LINE__);
return (EINVAL);
+ }
thash = NULL;
break;
#endif
case 0:
break;
default:
+ SDT_PROBE1(opencrypto, dev, ioctl, error,
+ __LINE__);
return (EINVAL);
}
csp.csp_mode = CSP_MODE_AEAD;