Merge tag 'ecryptfs-3.12-rc1-crypt-ctx' of git://git.kernel.org/pub/scm/linux/kernel/git/tyhicks/ecryptfs
Pull eCryptfs fixes from Tyler Hicks: "Two small fixes to the code that initializes the per-file crypto contexts" * tag 'ecryptfs-3.12-rc1-crypt-ctx' of git://git.kernel.org/pub/scm/linux/kernel/git/tyhicks/ecryptfs: ecryptfs: avoid ctx initialization race ecryptfs: remove check for if an array is NULL
This commit is contained in:
@@ -609,39 +609,35 @@ int ecryptfs_init_crypt_ctx(struct ecryptfs_crypt_stat *crypt_stat)
|
||||
char *full_alg_name;
|
||||
int rc = -EINVAL;
|
||||
|
||||
if (!crypt_stat->cipher) {
|
||||
ecryptfs_printk(KERN_ERR, "No cipher specified\n");
|
||||
goto out;
|
||||
}
|
||||
ecryptfs_printk(KERN_DEBUG,
|
||||
"Initializing cipher [%s]; strlen = [%d]; "
|
||||
"key_size_bits = [%zd]\n",
|
||||
crypt_stat->cipher, (int)strlen(crypt_stat->cipher),
|
||||
crypt_stat->key_size << 3);
|
||||
mutex_lock(&crypt_stat->cs_tfm_mutex);
|
||||
if (crypt_stat->tfm) {
|
||||
rc = 0;
|
||||
goto out;
|
||||
goto out_unlock;
|
||||
}
|
||||
mutex_lock(&crypt_stat->cs_tfm_mutex);
|
||||
rc = ecryptfs_crypto_api_algify_cipher_name(&full_alg_name,
|
||||
crypt_stat->cipher, "cbc");
|
||||
if (rc)
|
||||
goto out_unlock;
|
||||
crypt_stat->tfm = crypto_alloc_ablkcipher(full_alg_name, 0, 0);
|
||||
kfree(full_alg_name);
|
||||
if (IS_ERR(crypt_stat->tfm)) {
|
||||
rc = PTR_ERR(crypt_stat->tfm);
|
||||
crypt_stat->tfm = NULL;
|
||||
ecryptfs_printk(KERN_ERR, "cryptfs: init_crypt_ctx(): "
|
||||
"Error initializing cipher [%s]\n",
|
||||
crypt_stat->cipher);
|
||||
goto out_unlock;
|
||||
full_alg_name);
|
||||
goto out_free;
|
||||
}
|
||||
crypto_ablkcipher_set_flags(crypt_stat->tfm, CRYPTO_TFM_REQ_WEAK_KEY);
|
||||
rc = 0;
|
||||
out_free:
|
||||
kfree(full_alg_name);
|
||||
out_unlock:
|
||||
mutex_unlock(&crypt_stat->cs_tfm_mutex);
|
||||
out:
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user