}
CDEBUG(D_INFO, "Using crypto hash: %s (%s) speed %d MB/s\n",
- crypto_tfm_alg_name(crypto_hash_tfm(desc->tfm)),
- crypto_tfm_alg_driver_name(crypto_hash_tfm(desc->tfm)),
+ (crypto_hash_tfm(desc->tfm))->__crt_alg->cra_name,
+ (crypto_hash_tfm(desc->tfm))->__crt_alg->cra_driver_name,
cfs_crypto_hash_speeds[alg_id]);
#ifdef HAVE_STRUCT_SHASH_ALG
unsigned char *key, unsigned int key_len,
unsigned char *hash, unsigned int *hash_len)
{
- struct scatterlist sl = {0};
+ struct scatterlist sl;
struct hash_desc hdesc;
int err;
const struct cfs_crypto_hash_type *type;
crypto_free_hash(hdesc.tfm);
return -ENOSPC;
}
- sg_set_buf(&sl, (void *)buf, buf_len);
+ sg_init_one(&sl, (void *)buf, buf_len);
hdesc.flags = 0;
err = crypto_hash_digest(&hdesc, &sl, sl.length, hash);
cfs_page_t *page, unsigned int offset,
unsigned int len)
{
- struct scatterlist sl = {0};
+ struct scatterlist sl;
+ sg_init_table(&sl, 1);
sg_set_page(&sl, page, len, offset & ~CFS_PAGE_MASK);
return crypto_hash_update((struct hash_desc *)hdesc, &sl, sl.length);
int cfs_crypto_hash_update(struct cfs_crypto_hash_desc *hdesc,
const void *buf, unsigned int buf_len)
{
- struct scatterlist sl = {0};
+ struct scatterlist sl;
- sg_set_buf(&sl, (void *)buf, buf_len);
+ sg_init_one(&sl, (void *)buf, buf_len);
return crypto_hash_update((struct hash_desc *)hdesc, &sl, sl.length);
}
if (hash_len == NULL) {
crypto_free_hash(((struct hash_desc *)hdesc)->tfm);
+ cfs_free(hdesc);
return 0;
}
if (hash == NULL || *hash_len < size) {
return err;
}
crypto_free_hash(((struct hash_desc *)hdesc)->tfm);
+ cfs_free(hdesc);
return err;
}
EXPORT_SYMBOL(cfs_crypto_hash_final);
static int crc32, adler32;
+#ifdef CONFIG_X86
+static int crc32pclmul;
+#endif
+
int cfs_crypto_register(void)
{
crc32 = cfs_crypto_crc32_register();
adler32 = cfs_crypto_adler32_register();
+#ifdef CONFIG_X86
+ crc32pclmul = cfs_crypto_crc32_pclmul_register();
+#endif
+
/* check all algorithms and do perfermance test */
cfs_crypto_test_hashes();
return 0;
cfs_crypto_crc32_unregister();
if (adler32 == 0)
cfs_crypto_adler32_unregister();
+
+#ifdef CONFIG_X86
+ if (crc32pclmul == 0)
+ cfs_crypto_crc32_pclmul_unregister();
+#endif
+
return;
}