summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/crypto/io/aes.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/crypto/io/aes.c')
-rw-r--r--usr/src/uts/common/crypto/io/aes.c47
1 files changed, 11 insertions, 36 deletions
diff --git a/usr/src/uts/common/crypto/io/aes.c b/usr/src/uts/common/crypto/io/aes.c
index 45044e1940..328599e331 100644
--- a/usr/src/uts/common/crypto/io/aes.c
+++ b/usr/src/uts/common/crypto/io/aes.c
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -232,51 +232,26 @@ _init(void)
{
int ret;
- /*
- * Register with KCF. If the registration fails, return error.
- */
- if ((ret = crypto_register_provider(&aes_prov_info,
- &aes_prov_handle)) != CRYPTO_SUCCESS) {
- cmn_err(CE_WARN, "%s _init: crypto_register_provider()"
- "failed (0x%x)", CRYPTO_PROVIDER_NAME, ret);
- return (EACCES);
- }
+ if ((ret = mod_install(&modlinkage)) != 0)
+ return (ret);
- if ((ret = mod_install(&modlinkage)) != 0) {
- int rv;
-
- ASSERT(aes_prov_handle != NULL);
- /* We should not return if the unregister returns busy. */
- while ((rv = crypto_unregister_provider(aes_prov_handle))
- == CRYPTO_BUSY) {
- cmn_err(CE_WARN,
- "%s _init: crypto_unregister_provider() "
- "failed (0x%x). Retrying.",
- CRYPTO_PROVIDER_NAME, rv);
- /* wait 10 seconds and try again. */
- delay(10 * drv_usectohz(1000000));
- }
+ /* Register with KCF. If the registration fails, remove the module. */
+ if (crypto_register_provider(&aes_prov_info, &aes_prov_handle)) {
+ (void) mod_remove(&modlinkage);
+ return (EACCES);
}
- return (ret);
+ return (0);
}
int
_fini(void)
{
- int ret;
-
- /*
- * Unregister from KCF if previous registration succeeded.
- */
+ /* Unregister from KCF if module is registered */
if (aes_prov_handle != NULL) {
- if ((ret = crypto_unregister_provider(aes_prov_handle)) !=
- CRYPTO_SUCCESS) {
- cmn_err(CE_WARN,
- "%s _fini: crypto_unregister_provider() "
- "failed (0x%x)", CRYPTO_PROVIDER_NAME, ret);
+ if (crypto_unregister_provider(aes_prov_handle))
return (EBUSY);
- }
+
aes_prov_handle = NULL;
}