module: icp: use original description

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
Closes #12901
This commit is contained in:
наб 2021-12-23 18:34:23 +01:00 committed by Brian Behlendorf
parent b0502ab097
commit bcee18d4e0
4 changed files with 3 additions and 37 deletions

View File

@ -206,24 +206,6 @@ kcf_alloc_provider_desc(const crypto_provider_info_t *info)
kcf_provider_desc_t *desc = kcf_provider_desc_t *desc =
kmem_zalloc(sizeof (kcf_provider_desc_t), KM_SLEEP); kmem_zalloc(sizeof (kcf_provider_desc_t), KM_SLEEP);
/*
* pd_description serves two purposes
* - Appears as a blank padded PKCS#11 style string, that will be
* returned to applications in CK_SLOT_INFO.slotDescription.
* This means that we should not have a null character in the
* first CRYPTO_PROVIDER_DESCR_MAX_LEN bytes.
* - Appears as a null-terminated string that can be used by
* other kcf routines.
*
* So, we allocate enough room for one extra null terminator
* which keeps every one happy.
*/
desc->pd_description = kmem_alloc(CRYPTO_PROVIDER_DESCR_MAX_LEN + 1,
KM_SLEEP);
(void) memset(desc->pd_description, ' ',
CRYPTO_PROVIDER_DESCR_MAX_LEN);
desc->pd_description[CRYPTO_PROVIDER_DESCR_MAX_LEN] = '\0';
desc->pd_mech_list_count = info->pi_mech_list_count; desc->pd_mech_list_count = info->pi_mech_list_count;
desc->pd_mechanisms = kmem_zalloc(sizeof (crypto_mech_info_t) * desc->pd_mechanisms = kmem_zalloc(sizeof (crypto_mech_info_t) *
info->pi_mech_list_count, KM_SLEEP); info->pi_mech_list_count, KM_SLEEP);
@ -290,10 +272,6 @@ kcf_free_provider_desc(kcf_provider_desc_t *desc)
/* free the kernel memory associated with the provider descriptor */ /* free the kernel memory associated with the provider descriptor */
if (desc->pd_description != NULL)
kmem_free(desc->pd_description,
CRYPTO_PROVIDER_DESCR_MAX_LEN + 1);
if (desc->pd_mechanisms != NULL) if (desc->pd_mechanisms != NULL)
/* free the memory associated with the mechanism info's */ /* free the memory associated with the mechanism info's */
kmem_free(desc->pd_mechanisms, sizeof (crypto_mech_info_t) * kmem_free(desc->pd_mechanisms, sizeof (crypto_mech_info_t) *

View File

@ -221,7 +221,7 @@ typedef struct kcf_provider_desc {
// int pd_module_id; // int pd_module_id;
// struct modctl *pd_mctlp; // struct modctl *pd_mctlp;
kcondvar_t pd_remove_cv; kcondvar_t pd_remove_cv;
char *pd_description; const char *pd_description;
uint_t pd_flags; uint_t pd_flags;
uint_t pd_hash_limit; uint_t pd_hash_limit;
crypto_kcf_provider_handle_t pd_kcf_prov_handle; crypto_kcf_provider_handle_t pd_kcf_prov_handle;

View File

@ -267,7 +267,7 @@ typedef uint_t crypto_kcf_provider_handle_t;
* pi_provider_dev must be specified with a different pi_provider_handle. * pi_provider_dev must be specified with a different pi_provider_handle.
*/ */
typedef struct crypto_provider_info { typedef struct crypto_provider_info {
char *pi_provider_description; const char *pi_provider_description;
crypto_provider_type_t pi_provider_type; crypto_provider_type_t pi_provider_type;
crypto_provider_handle_t pi_provider_handle; crypto_provider_handle_t pi_provider_handle;
const crypto_ops_t *pi_ops_vector; const crypto_ops_t *pi_ops_vector;

View File

@ -96,19 +96,7 @@ crypto_register_provider(const crypto_provider_info_t *info,
prov_desc->pd_prov_handle = info->pi_provider_handle; prov_desc->pd_prov_handle = info->pi_provider_handle;
/* copy provider description string */ /* copy provider description string */
if (info->pi_provider_description != NULL) { prov_desc->pd_description = info->pi_provider_description;
/*
* pi_provider_descriptor is a string that can contain
* up to CRYPTO_PROVIDER_DESCR_MAX_LEN + 1 characters
* INCLUDING the terminating null character. A bcopy()
* is necessary here as pd_description should not have
* a null character. See comments in kcf_alloc_provider_desc()
* for details on pd_description field.
*/
bcopy(info->pi_provider_description, prov_desc->pd_description,
MIN(strlen(info->pi_provider_description),
(size_t)CRYPTO_PROVIDER_DESCR_MAX_LEN));
}
/* Change from Illumos: the ops vector is persistent. */ /* Change from Illumos: the ops vector is persistent. */
if (info->pi_provider_type != CRYPTO_LOGICAL_PROVIDER) { if (info->pi_provider_type != CRYPTO_LOGICAL_PROVIDER) {