module: icp: have a static 8 providers
This is currently twice the amount we actually have (sha[12], skein, aes), and 512 * sizeof(void*) = 4096: 128x more than we need and a waste of most of a page in the kernel address space Plus, there's no need to actually allocate it dynamically: it's always got a static size. Put it in .data Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz> Closes #12901
This commit is contained in:
parent
464700ae02
commit
d59a7fae40
@ -45,7 +45,7 @@
|
||||
#include <sys/crypto/sched_impl.h>
|
||||
#include <sys/crypto/spi.h>
|
||||
|
||||
#define KCF_MAX_PROVIDERS 512 /* max number of providers */
|
||||
#define KCF_MAX_PROVIDERS 8 /* max number of providers */
|
||||
|
||||
/*
|
||||
* Prov_tab is an array of providers which is updated when
|
||||
@ -59,33 +59,25 @@
|
||||
*
|
||||
* prov_tab entries are not updated from kcf.conf or by cryptoadm(1M).
|
||||
*/
|
||||
static kcf_provider_desc_t **prov_tab = NULL;
|
||||
static kcf_provider_desc_t *prov_tab[KCF_MAX_PROVIDERS];
|
||||
static kmutex_t prov_tab_mutex; /* ensure exclusive access to the table */
|
||||
static uint_t prov_tab_num = 0; /* number of providers in table */
|
||||
static uint_t prov_tab_max = KCF_MAX_PROVIDERS;
|
||||
|
||||
void
|
||||
kcf_prov_tab_destroy(void)
|
||||
{
|
||||
mutex_destroy(&prov_tab_mutex);
|
||||
|
||||
if (prov_tab)
|
||||
kmem_free(prov_tab, prov_tab_max *
|
||||
sizeof (kcf_provider_desc_t *));
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize a mutex and the KCF providers table, prov_tab.
|
||||
* The providers table is dynamically allocated with prov_tab_max entries.
|
||||
* The providers table is dynamically allocated with KCF_MAX_PROVIDERS entries.
|
||||
* Called from kcf module _init().
|
||||
*/
|
||||
void
|
||||
kcf_prov_tab_init(void)
|
||||
{
|
||||
mutex_init(&prov_tab_mutex, NULL, MUTEX_DEFAULT, NULL);
|
||||
|
||||
prov_tab = kmem_zalloc(prov_tab_max * sizeof (kcf_provider_desc_t *),
|
||||
KM_SLEEP);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -101,8 +93,6 @@ kcf_prov_tab_add_provider(kcf_provider_desc_t *prov_desc)
|
||||
{
|
||||
uint_t i;
|
||||
|
||||
ASSERT(prov_tab != NULL);
|
||||
|
||||
mutex_enter(&prov_tab_mutex);
|
||||
|
||||
/* find free slot in providers table */
|
||||
@ -146,7 +136,6 @@ kcf_prov_tab_rem_provider(crypto_provider_id_t prov_id)
|
||||
{
|
||||
kcf_provider_desc_t *prov_desc;
|
||||
|
||||
ASSERT(prov_tab != NULL);
|
||||
ASSERT(prov_tab_num >= 0);
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user