/*
* Copyright 2012 Xyratex Technology Limited
+ *
+ * Copyright (c) 2012, Intel Corporation.
*/
#include <linux/crypto.h>
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
+#ifdef HAVE_PCLMULQDQ
static int crc32pclmul;
#endif
int cfs_crypto_register(void)
{
+ cfs_request_module("crc32c");
+
crc32 = cfs_crypto_crc32_register();
adler32 = cfs_crypto_adler32_register();
-#ifdef CONFIG_X86
+#ifdef HAVE_PCLMULQDQ
crc32pclmul = cfs_crypto_crc32_pclmul_register();
#endif
- /* check all algorithms and do perfermance test */
+ /* check all algorithms and do performance test */
cfs_crypto_test_hashes();
return 0;
}
if (adler32 == 0)
cfs_crypto_adler32_unregister();
-#ifdef CONFIG_X86
+#ifdef HAVE_PCLMULQDQ
if (crc32pclmul == 0)
cfs_crypto_crc32_pclmul_unregister();
#endif