Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Pull crypto update from Herbert Xu: "API: - Crypto self tests can now be disabled at boot/run time. - Add async support to algif_aead. Algorithms: - A large number of fixes to MPI from Nicolai Stange. - Performance improvement for HMAC DRBG. Drivers: - Use generic crypto engine in omap-des. - Merge ppc4xx-rng and crypto4xx drivers. - Fix lockups in sun4i-ss driver by disabling IRQs. - Add DMA engine support to ccp. - Reenable talitos hash algorithms. - Add support for Hisilicon SoC RNG. - Add basic crypto driver for the MXC SCC. Others: - Do not allocate crypto hash tfm in NORECLAIM context in ecryptfs" * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (77 commits) crypto: qat - change the adf_ctl_stop_devices to void crypto: caam - fix caam_jr_alloc() ret code crypto: vmx - comply with ABIs that specify vrsave as reserved. crypto: testmgr - Add a flag allowing the self-tests to be disabled at runtime. crypto: ccp - constify ccp_actions structure crypto: marvell/cesa - Use dma_pool_zalloc crypto: qat - make adf_vf_isr.c dependant on IOV config crypto: qat - Fix typo in comments lib: asn1_decoder - add MODULE_LICENSE("GPL") crypto: omap-sham - Use dma_request_chan() for requesting DMA channel crypto: omap-des - Use dma_request_chan() for requesting DMA channel crypto: omap-aes - Use dma_request_chan() for requesting DMA channel crypto: omap-des - Integrate with the crypto engine framework crypto: s5p-sss - fix incorrect usage of scatterlists api crypto: s5p-sss - Fix missed interrupts when working with 8 kB blocks crypto: s5p-sss - Use common BIT macro crypto: mxc-scc - fix unwinding in mxc_scc_crypto_register() crypto: mxc-scc - signedness bugs in mxc_scc_ablkcipher_req_init() crypto: talitos - fix ahash algorithms registration crypto: ccp - Ensure all dependencies are specified ...
This commit is contained in:
@@ -105,19 +105,7 @@ static int ecryptfs_calculate_md5(char *dst,
|
||||
struct crypto_shash *tfm;
|
||||
int rc = 0;
|
||||
|
||||
mutex_lock(&crypt_stat->cs_hash_tfm_mutex);
|
||||
tfm = crypt_stat->hash_tfm;
|
||||
if (!tfm) {
|
||||
tfm = crypto_alloc_shash(ECRYPTFS_DEFAULT_HASH, 0, 0);
|
||||
if (IS_ERR(tfm)) {
|
||||
rc = PTR_ERR(tfm);
|
||||
ecryptfs_printk(KERN_ERR, "Error attempting to "
|
||||
"allocate crypto context; rc = [%d]\n",
|
||||
rc);
|
||||
goto out;
|
||||
}
|
||||
crypt_stat->hash_tfm = tfm;
|
||||
}
|
||||
rc = ecryptfs_hash_digest(tfm, src, len, dst);
|
||||
if (rc) {
|
||||
printk(KERN_ERR
|
||||
@@ -126,7 +114,6 @@ static int ecryptfs_calculate_md5(char *dst,
|
||||
goto out;
|
||||
}
|
||||
out:
|
||||
mutex_unlock(&crypt_stat->cs_hash_tfm_mutex);
|
||||
return rc;
|
||||
}
|
||||
|
||||
@@ -207,16 +194,29 @@ out:
|
||||
*
|
||||
* Initialize the crypt_stat structure.
|
||||
*/
|
||||
void
|
||||
ecryptfs_init_crypt_stat(struct ecryptfs_crypt_stat *crypt_stat)
|
||||
int ecryptfs_init_crypt_stat(struct ecryptfs_crypt_stat *crypt_stat)
|
||||
{
|
||||
struct crypto_shash *tfm;
|
||||
int rc;
|
||||
|
||||
tfm = crypto_alloc_shash(ECRYPTFS_DEFAULT_HASH, 0, 0);
|
||||
if (IS_ERR(tfm)) {
|
||||
rc = PTR_ERR(tfm);
|
||||
ecryptfs_printk(KERN_ERR, "Error attempting to "
|
||||
"allocate crypto context; rc = [%d]\n",
|
||||
rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
memset((void *)crypt_stat, 0, sizeof(struct ecryptfs_crypt_stat));
|
||||
INIT_LIST_HEAD(&crypt_stat->keysig_list);
|
||||
mutex_init(&crypt_stat->keysig_list_mutex);
|
||||
mutex_init(&crypt_stat->cs_mutex);
|
||||
mutex_init(&crypt_stat->cs_tfm_mutex);
|
||||
mutex_init(&crypt_stat->cs_hash_tfm_mutex);
|
||||
crypt_stat->hash_tfm = tfm;
|
||||
crypt_stat->flags |= ECRYPTFS_STRUCT_INITIALIZED;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user