aboutsummaryrefslogtreecommitdiffstats
path: root/module/icp/api
diff options
context:
space:
mode:
authorнаб <[email protected]>2021-12-25 04:34:29 +0100
committerBrian Behlendorf <[email protected]>2022-02-15 16:25:37 -0800
commitdf7b54f1d983ca41e7b2add09664b1da128f3424 (patch)
tree867a3ba405a08eb81c848408b8fe11b3444576fb /module/icp/api
parent15ec0863963a12f698e0318d6cac76c48b9770d5 (diff)
module: icp: rip out insane crypto_req_handle_t mechanism, inline KM_SLEEP
Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Ahelenia Ziemiańska <[email protected]> Closes #12901
Diffstat (limited to 'module/icp/api')
-rw-r--r--module/icp/api/kcf_cipher.c22
-rw-r--r--module/icp/api/kcf_ctxops.c7
-rw-r--r--module/icp/api/kcf_mac.c39
3 files changed, 20 insertions, 48 deletions
diff --git a/module/icp/api/kcf_cipher.c b/module/icp/api/kcf_cipher.c
index 963e94bfd..e192a6e19 100644
--- a/module/icp/api/kcf_cipher.c
+++ b/module/icp/api/kcf_cipher.c
@@ -52,7 +52,6 @@
* tmpl: a crypto_ctx_template_t, opaque template of a context of an
* encryption with the 'mech' using 'key'. 'tmpl' is created by
* a previous call to crypto_create_ctx_template().
- * cr: crypto_call_req_t calling conditions and call back info.
*
* Description:
* Asynchronously submits a request for, or synchronously performs a
@@ -62,16 +61,12 @@
* message.
* Relies on the KCF scheduler to pick a provider.
*
- * Context:
- * Process or interrupt, according to the semantics dictated by the 'cr'.
- *
* Returns:
* See comment in the beginning of the file.
*/
int
crypto_encrypt(crypto_mechanism_t *mech, crypto_data_t *plaintext,
- crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_data_t *ciphertext,
- crypto_call_req_t *crq)
+ crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_data_t *ciphertext)
{
int error;
kcf_mech_entry_t *me;
@@ -95,12 +90,12 @@ retry:
crypto_mechanism_t lmech = *mech;
KCF_SET_PROVIDER_MECHNUM(mech->cm_type, pd, &lmech);
error = KCF_PROV_ENCRYPT_ATOMIC(pd, pd->pd_sid, &lmech, key,
- plaintext, ciphertext, spi_ctx_tmpl, KCF_SWFP_RHNDL(crq));
+ plaintext, ciphertext, spi_ctx_tmpl);
KCF_PROV_INCRSTATS(pd, error);
if (error != CRYPTO_SUCCESS && IS_RECOVERABLE(error)) {
/* Add pd to the linked list of providers tried. */
- if (kcf_insert_triedlist(&list, pd, KCF_KMFLAG(crq)) != NULL)
+ if (kcf_insert_triedlist(&list, pd, KM_SLEEP) != NULL)
goto retry;
}
@@ -129,7 +124,6 @@ retry:
* tmpl: a crypto_ctx_template_t, opaque template of a context of an
* encryption with the 'mech' using 'key'. 'tmpl' is created by
* a previous call to crypto_create_ctx_template().
- * cr: crypto_call_req_t calling conditions and call back info.
*
* Description:
* Asynchronously submits a request for, or synchronously performs a
@@ -139,16 +133,12 @@ retry:
* message.
* Relies on the KCF scheduler to choose a provider.
*
- * Context:
- * Process or interrupt, according to the semantics dictated by the 'cr'.
- *
* Returns:
* See comment in the beginning of the file.
*/
int
crypto_decrypt(crypto_mechanism_t *mech, crypto_data_t *ciphertext,
- crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_data_t *plaintext,
- crypto_call_req_t *crq)
+ crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_data_t *plaintext)
{
int error;
kcf_mech_entry_t *me;
@@ -173,12 +163,12 @@ retry:
KCF_SET_PROVIDER_MECHNUM(mech->cm_type, pd, &lmech);
error = KCF_PROV_DECRYPT_ATOMIC(pd, pd->pd_sid, &lmech, key,
- ciphertext, plaintext, spi_ctx_tmpl, KCF_SWFP_RHNDL(crq));
+ ciphertext, plaintext, spi_ctx_tmpl);
KCF_PROV_INCRSTATS(pd, error);
if (error != CRYPTO_SUCCESS && IS_RECOVERABLE(error)) {
/* Add pd to the linked list of providers tried. */
- if (kcf_insert_triedlist(&list, pd, KCF_KMFLAG(crq)) != NULL)
+ if (kcf_insert_triedlist(&list, pd, KM_SLEEP) != NULL)
goto retry;
}
diff --git a/module/icp/api/kcf_ctxops.c b/module/icp/api/kcf_ctxops.c
index 85cc55c8a..67bf76a8f 100644
--- a/module/icp/api/kcf_ctxops.c
+++ b/module/icp/api/kcf_ctxops.c
@@ -48,7 +48,6 @@
* ptmpl: a storage for the opaque crypto_ctx_template_t, allocated and
* initialized by the software provider this routine is
* dispatched to.
- * kmflag: KM_SLEEP/KM_NOSLEEP mem. alloc. flag.
*
* Description:
* Redirects the call to the software provider of the specified
@@ -69,7 +68,7 @@
*/
int
crypto_create_ctx_template(crypto_mechanism_t *mech, crypto_key_t *key,
- crypto_ctx_template_t *ptmpl, int kmflag)
+ crypto_ctx_template_t *ptmpl)
{
int error;
kcf_mech_entry_t *me;
@@ -90,7 +89,7 @@ crypto_create_ctx_template(crypto_mechanism_t *mech, crypto_key_t *key,
return (error);
if ((ctx_tmpl = (kcf_ctx_template_t *)kmem_alloc(
- sizeof (kcf_ctx_template_t), kmflag)) == NULL) {
+ sizeof (kcf_ctx_template_t), KM_SLEEP)) == NULL) {
KCF_PROV_REFRELE(pd);
return (CRYPTO_HOST_MEMORY);
}
@@ -101,7 +100,7 @@ crypto_create_ctx_template(crypto_mechanism_t *mech, crypto_key_t *key,
prov_mech.cm_param_len = mech->cm_param_len;
error = KCF_PROV_CREATE_CTX_TEMPLATE(pd, &prov_mech, key,
- &(ctx_tmpl->ct_prov_tmpl), &(ctx_tmpl->ct_size), KCF_RHNDL(kmflag));
+ &(ctx_tmpl->ct_prov_tmpl), &(ctx_tmpl->ct_size));
if (error == CRYPTO_SUCCESS) {
*ptmpl = ctx_tmpl;
diff --git a/module/icp/api/kcf_mac.c b/module/icp/api/kcf_mac.c
index 0249fe87f..6766c61cf 100644
--- a/module/icp/api/kcf_mac.c
+++ b/module/icp/api/kcf_mac.c
@@ -67,7 +67,6 @@
* tmpl: a crypto_ctx_template_t, opaque template of a context of a
* MAC with the 'mech' using 'key'. 'tmpl' is created by
* a previous call to crypto_create_ctx_template().
- * cr: crypto_call_req_t calling conditions and call back info.
*
* Description:
* Asynchronously submits a request for, or synchronously performs a
@@ -78,16 +77,12 @@
* authentication code.
* Relies on the KCF scheduler to choose a provider.
*
- * Context:
- * Process or interrupt, according to the semantics dictated by the 'crq'.
- *
* Returns:
* See comment in the beginning of the file.
*/
int
crypto_mac(crypto_mechanism_t *mech, crypto_data_t *data,
- crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_data_t *mac,
- crypto_call_req_t *crq)
+ crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_data_t *mac)
{
int error;
kcf_mech_entry_t *me;
@@ -111,12 +106,12 @@ retry:
crypto_mechanism_t lmech = *mech;
KCF_SET_PROVIDER_MECHNUM(mech->cm_type, pd, &lmech);
error = KCF_PROV_MAC_ATOMIC(pd, pd->pd_sid, &lmech, key, data,
- mac, spi_ctx_tmpl, KCF_SWFP_RHNDL(crq));
+ mac, spi_ctx_tmpl);
KCF_PROV_INCRSTATS(pd, error);
if (error != CRYPTO_SUCCESS && IS_RECOVERABLE(error)) {
/* Add pd to the linked list of providers tried. */
- if (kcf_insert_triedlist(&list, pd, KCF_KMFLAG(crq)) != NULL)
+ if (kcf_insert_triedlist(&list, pd, KM_SLEEP) != NULL)
goto retry;
}
@@ -143,7 +138,6 @@ retry:
* MAC with the 'mech' using 'key'. 'tmpl' is created by
* a previous call to crypto_create_ctx_template().
* ctxp: Pointer to a crypto_context_t.
- * cr: crypto_call_req_t calling conditions and call back info.
*
* Description:
* Asynchronously submits a request for, or synchronously performs the
@@ -156,16 +150,13 @@ retry:
* The caller should hold a reference on the specified provider
* descriptor before calling this function.
*
- * Context:
- * Process or interrupt, according to the semantics dictated by the 'cr'.
- *
* Returns:
* See comment in the beginning of the file.
*/
static int
crypto_mac_init_prov(kcf_provider_desc_t *pd,
crypto_mechanism_t *mech, crypto_key_t *key, crypto_spi_ctx_template_t tmpl,
- crypto_context_t *ctxp, crypto_call_req_t *crq)
+ crypto_context_t *ctxp)
{
int rv;
crypto_ctx_t *ctx;
@@ -174,13 +165,12 @@ crypto_mac_init_prov(kcf_provider_desc_t *pd,
ASSERT(KCF_PROV_REFHELD(pd));
/* Allocate and initialize the canonical context */
- if ((ctx = kcf_new_ctx(crq, real_provider)) == NULL)
+ if ((ctx = kcf_new_ctx(real_provider)) == NULL)
return (CRYPTO_HOST_MEMORY);
crypto_mechanism_t lmech = *mech;
KCF_SET_PROVIDER_MECHNUM(mech->cm_type, real_provider, &lmech);
- rv = KCF_PROV_MAC_INIT(real_provider, ctx, &lmech, key, tmpl,
- KCF_SWFP_RHNDL(crq));
+ rv = KCF_PROV_MAC_INIT(real_provider, ctx, &lmech, key, tmpl);
KCF_PROV_INCRSTATS(pd, rv);
if (rv == CRYPTO_SUCCESS)
@@ -200,8 +190,7 @@ crypto_mac_init_prov(kcf_provider_desc_t *pd,
*/
int
crypto_mac_init(crypto_mechanism_t *mech, crypto_key_t *key,
- crypto_ctx_template_t tmpl, crypto_context_t *ctxp,
- crypto_call_req_t *crq)
+ crypto_ctx_template_t tmpl, crypto_context_t *ctxp)
{
int error;
kcf_mech_entry_t *me;
@@ -230,10 +219,10 @@ retry:
spi_ctx_tmpl = ctx_tmpl->ct_prov_tmpl;
error = crypto_mac_init_prov(pd, mech, key,
- spi_ctx_tmpl, ctxp, crq);
+ spi_ctx_tmpl, ctxp);
if (error != CRYPTO_SUCCESS && IS_RECOVERABLE(error)) {
/* Add pd to the linked list of providers tried. */
- if (kcf_insert_triedlist(&list, pd, KCF_KMFLAG(crq)) != NULL)
+ if (kcf_insert_triedlist(&list, pd, KM_SLEEP) != NULL)
goto retry;
}
@@ -254,9 +243,6 @@ retry:
* Description:
* Synchronously performs a part of a MAC operation.
*
- * Context:
- * Process or interrupt, according to the semantics dictated by the 'cr'.
- *
* Returns:
* See comment in the beginning of the file.
*/
@@ -273,7 +259,7 @@ crypto_mac_update(crypto_context_t context, crypto_data_t *data)
return (CRYPTO_INVALID_CONTEXT);
}
- int rv = KCF_PROV_MAC_UPDATE(pd, ctx, data, NULL);
+ int rv = KCF_PROV_MAC_UPDATE(pd, ctx, data);
KCF_PROV_INCRSTATS(pd, rv);
return (rv);
}
@@ -288,9 +274,6 @@ crypto_mac_update(crypto_context_t context, crypto_data_t *data)
* Description:
* Synchronously performs a part of a message authentication operation.
*
- * Context:
- * Process or interrupt, according to the semantics dictated by the 'cr'.
- *
* Returns:
* See comment in the beginning of the file.
*/
@@ -307,7 +290,7 @@ crypto_mac_final(crypto_context_t context, crypto_data_t *mac)
return (CRYPTO_INVALID_CONTEXT);
}
- int rv = KCF_PROV_MAC_FINAL(pd, ctx, mac, NULL);
+ int rv = KCF_PROV_MAC_FINAL(pd, ctx, mac);
KCF_PROV_INCRSTATS(pd, rv);
/* Release the hold done in kcf_new_ctx() during init step. */