Add crypt_backend_destroy() function and cll it as library destructor.

This commit is contained in:
Milan Broz
2017-08-22 15:48:24 +02:00
parent 096c50cafc
commit 677adc7adc
7 changed files with 35 additions and 1 deletions

View File

@@ -31,6 +31,7 @@ struct crypt_cipher;
struct crypt_storage; struct crypt_storage;
int crypt_backend_init(struct crypt_device *ctx); int crypt_backend_init(struct crypt_device *ctx);
void crypt_backend_destroy(void);
#define CRYPT_BACKEND_KERNEL (1 << 0) /* Crypto uses kernel part, for benchmark */ #define CRYPT_BACKEND_KERNEL (1 << 0) /* Crypto uses kernel part, for benchmark */

View File

@@ -121,6 +121,14 @@ int crypt_backend_init(struct crypt_device *ctx)
return 0; return 0;
} }
void crypt_backend_destroy(void)
{
if (crypto_backend_initialised)
gcry_control(GCRYCTL_TERM_SECMEM);
crypto_backend_initialised = 0;
}
const char *crypt_backend_version(void) const char *crypt_backend_version(void)
{ {
return crypto_backend_initialised ? version : ""; return crypto_backend_initialised ? version : "";

View File

@@ -38,7 +38,7 @@
#endif #endif
static int crypto_backend_initialised = 0; static int crypto_backend_initialised = 0;
static char version[64]; static char version[256];
struct hash_alg { struct hash_alg {
const char *name; const char *name;
@@ -126,6 +126,11 @@ int crypt_backend_init(struct crypt_device *ctx)
return 0; return 0;
} }
void crypt_backend_destroy(void)
{
crypto_backend_initialised = 0;
}
uint32_t crypt_backend_flags(void) uint32_t crypt_backend_flags(void)
{ {
return CRYPT_BACKEND_KERNEL; return CRYPT_BACKEND_KERNEL;

View File

@@ -143,6 +143,11 @@ int crypt_backend_init(struct crypt_device *ctx)
return 0; return 0;
} }
void crypt_backend_destroy(void)
{
return;
}
const char *crypt_backend_version(void) const char *crypt_backend_version(void)
{ {
return version; return version;

View File

@@ -88,6 +88,11 @@ int crypt_backend_init(struct crypt_device *ctx)
return 0; return 0;
} }
void crypt_backend_destroy(void)
{
crypto_backend_initialised = 0;
}
uint32_t crypt_backend_flags(void) uint32_t crypt_backend_flags(void)
{ {
return 0; return 0;

View File

@@ -116,6 +116,11 @@ int crypt_backend_init(struct crypt_device *ctx)
return 0; return 0;
} }
void crypt_backend_destroy(void)
{
crypto_backend_initialised = 0;
}
uint32_t crypt_backend_flags(void) uint32_t crypt_backend_flags(void)
{ {
return 0; return 0;

View File

@@ -3062,3 +3062,8 @@ int crypt_get_integrity_info(struct crypt_device *cd,
return -ENOTSUP; return -ENOTSUP;
} }
static void __attribute__((destructor)) libcryptsetup_exit(void)
{
crypt_backend_destroy();
}