aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ecryptfs
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ecryptfs')
-rw-r--r--fs/ecryptfs/crypto.c9
-rw-r--r--fs/ecryptfs/inode.c20
-rw-r--r--fs/ecryptfs/main.c5
-rw-r--r--fs/ecryptfs/messaging.c1
-rw-r--r--fs/ecryptfs/super.c1
5 files changed, 14 insertions, 22 deletions
diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c
index bbed2fd40fdc..f8ef0af919e7 100644
--- a/fs/ecryptfs/crypto.c
+++ b/fs/ecryptfs/crypto.c
@@ -799,7 +799,7 @@ int ecryptfs_init_crypt_ctx(struct ecryptfs_crypt_stat *crypt_stat)
799 rc = ecryptfs_crypto_api_algify_cipher_name(&full_alg_name, 799 rc = ecryptfs_crypto_api_algify_cipher_name(&full_alg_name,
800 crypt_stat->cipher, "cbc"); 800 crypt_stat->cipher, "cbc");
801 if (rc) 801 if (rc)
802 goto out; 802 goto out_unlock;
803 crypt_stat->tfm = crypto_alloc_blkcipher(full_alg_name, 0, 803 crypt_stat->tfm = crypto_alloc_blkcipher(full_alg_name, 0,
804 CRYPTO_ALG_ASYNC); 804 CRYPTO_ALG_ASYNC);
805 kfree(full_alg_name); 805 kfree(full_alg_name);
@@ -808,12 +808,12 @@ int ecryptfs_init_crypt_ctx(struct ecryptfs_crypt_stat *crypt_stat)
808 ecryptfs_printk(KERN_ERR, "cryptfs: init_crypt_ctx(): " 808 ecryptfs_printk(KERN_ERR, "cryptfs: init_crypt_ctx(): "
809 "Error initializing cipher [%s]\n", 809 "Error initializing cipher [%s]\n",
810 crypt_stat->cipher); 810 crypt_stat->cipher);
811 mutex_unlock(&crypt_stat->cs_tfm_mutex); 811 goto out_unlock;
812 goto out;
813 } 812 }
814 crypto_blkcipher_set_flags(crypt_stat->tfm, CRYPTO_TFM_REQ_WEAK_KEY); 813 crypto_blkcipher_set_flags(crypt_stat->tfm, CRYPTO_TFM_REQ_WEAK_KEY);
815 mutex_unlock(&crypt_stat->cs_tfm_mutex);
816 rc = 0; 814 rc = 0;
815out_unlock:
816 mutex_unlock(&crypt_stat->cs_tfm_mutex);
817out: 817out:
818 return rc; 818 return rc;
819} 819}
@@ -1847,6 +1847,7 @@ ecryptfs_add_new_key_tfm(struct ecryptfs_key_tfm **key_tfm, char *cipher_name,
1847 mutex_init(&tmp_tfm->key_tfm_mutex); 1847 mutex_init(&tmp_tfm->key_tfm_mutex);
1848 strncpy(tmp_tfm->cipher_name, cipher_name, 1848 strncpy(tmp_tfm->cipher_name, cipher_name,
1849 ECRYPTFS_MAX_CIPHER_NAME_SIZE); 1849 ECRYPTFS_MAX_CIPHER_NAME_SIZE);
1850 tmp_tfm->cipher_name[ECRYPTFS_MAX_CIPHER_NAME_SIZE] = '\0';
1850 tmp_tfm->key_size = key_size; 1851 tmp_tfm->key_size = key_size;
1851 rc = ecryptfs_process_key_cipher(&tmp_tfm->key_tfm, 1852 rc = ecryptfs_process_key_cipher(&tmp_tfm->key_tfm,
1852 tmp_tfm->cipher_name, 1853 tmp_tfm->cipher_name,
diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
index 0b1ab016fa2e..5a719180983c 100644
--- a/fs/ecryptfs/inode.c
+++ b/fs/ecryptfs/inode.c
@@ -120,22 +120,9 @@ ecryptfs_do_create(struct inode *directory_inode,
120 rc = ecryptfs_create_underlying_file(lower_dir_dentry->d_inode, 120 rc = ecryptfs_create_underlying_file(lower_dir_dentry->d_inode,
121 ecryptfs_dentry, mode, nd); 121 ecryptfs_dentry, mode, nd);
122 if (rc) { 122 if (rc) {
123 struct inode *ecryptfs_inode = ecryptfs_dentry->d_inode; 123 printk(KERN_ERR "%s: Failure to create dentry in lower fs; "
124 struct ecryptfs_inode_info *inode_info = 124 "rc = [%d]\n", __FUNCTION__, rc);
125 ecryptfs_inode_to_private(ecryptfs_inode); 125 goto out_lock;
126
127 printk(KERN_WARNING "%s: Error creating underlying file; "
128 "rc = [%d]; checking for existing\n", __FUNCTION__, rc);
129 if (inode_info) {
130 mutex_lock(&inode_info->lower_file_mutex);
131 if (!inode_info->lower_file) {
132 mutex_unlock(&inode_info->lower_file_mutex);
133 printk(KERN_ERR "%s: Failure to set underlying "
134 "file; rc = [%d]\n", __FUNCTION__, rc);
135 goto out_lock;
136 }
137 mutex_unlock(&inode_info->lower_file_mutex);
138 }
139 } 126 }
140 rc = ecryptfs_interpose(lower_dentry, ecryptfs_dentry, 127 rc = ecryptfs_interpose(lower_dentry, ecryptfs_dentry,
141 directory_inode->i_sb, 0); 128 directory_inode->i_sb, 0);
@@ -451,6 +438,7 @@ static int ecryptfs_unlink(struct inode *dir, struct dentry *dentry)
451 dentry->d_inode->i_nlink = 438 dentry->d_inode->i_nlink =
452 ecryptfs_inode_to_lower(dentry->d_inode)->i_nlink; 439 ecryptfs_inode_to_lower(dentry->d_inode)->i_nlink;
453 dentry->d_inode->i_ctime = dir->i_ctime; 440 dentry->d_inode->i_ctime = dir->i_ctime;
441 d_drop(dentry);
454out_unlock: 442out_unlock:
455 unlock_parent(lower_dentry); 443 unlock_parent(lower_dentry);
456 return rc; 444 return rc;
diff --git a/fs/ecryptfs/main.c b/fs/ecryptfs/main.c
index a277754da171..e5580bcb923a 100644
--- a/fs/ecryptfs/main.c
+++ b/fs/ecryptfs/main.c
@@ -138,11 +138,14 @@ int ecryptfs_init_persistent_file(struct dentry *ecryptfs_dentry)
138 inode_info->lower_file = dentry_open(lower_dentry, 138 inode_info->lower_file = dentry_open(lower_dentry,
139 lower_mnt, 139 lower_mnt,
140 (O_RDWR | O_LARGEFILE)); 140 (O_RDWR | O_LARGEFILE));
141 if (IS_ERR(inode_info->lower_file)) 141 if (IS_ERR(inode_info->lower_file)) {
142 dget(lower_dentry);
143 mntget(lower_mnt);
142 inode_info->lower_file = dentry_open(lower_dentry, 144 inode_info->lower_file = dentry_open(lower_dentry,
143 lower_mnt, 145 lower_mnt,
144 (O_RDONLY 146 (O_RDONLY
145 | O_LARGEFILE)); 147 | O_LARGEFILE));
148 }
146 if (IS_ERR(inode_info->lower_file)) { 149 if (IS_ERR(inode_info->lower_file)) {
147 printk(KERN_ERR "Error opening lower persistent file " 150 printk(KERN_ERR "Error opening lower persistent file "
148 "for lower_dentry [0x%p] and lower_mnt [0x%p]\n", 151 "for lower_dentry [0x%p] and lower_mnt [0x%p]\n",
diff --git a/fs/ecryptfs/messaging.c b/fs/ecryptfs/messaging.c
index a96d341d154d..9cc2aec27b0d 100644
--- a/fs/ecryptfs/messaging.c
+++ b/fs/ecryptfs/messaging.c
@@ -427,6 +427,7 @@ int ecryptfs_init_messaging(unsigned int transport)
427 if (!ecryptfs_daemon_id_hash) { 427 if (!ecryptfs_daemon_id_hash) {
428 rc = -ENOMEM; 428 rc = -ENOMEM;
429 ecryptfs_printk(KERN_ERR, "Failed to allocate memory\n"); 429 ecryptfs_printk(KERN_ERR, "Failed to allocate memory\n");
430 mutex_unlock(&ecryptfs_daemon_id_hash_mux);
430 goto out; 431 goto out;
431 } 432 }
432 for (i = 0; i < ecryptfs_hash_buckets; i++) 433 for (i = 0; i < ecryptfs_hash_buckets; i++)
diff --git a/fs/ecryptfs/super.c b/fs/ecryptfs/super.c
index f8cdab2bee3d..4859c4eecd65 100644
--- a/fs/ecryptfs/super.c
+++ b/fs/ecryptfs/super.c
@@ -86,7 +86,6 @@ static void ecryptfs_destroy_inode(struct inode *inode)
86 fput(inode_info->lower_file); 86 fput(inode_info->lower_file);
87 inode_info->lower_file = NULL; 87 inode_info->lower_file = NULL;
88 d_drop(lower_dentry); 88 d_drop(lower_dentry);
89 d_delete(lower_dentry);
90 } 89 }
91 } 90 }
92 mutex_unlock(&inode_info->lower_file_mutex); 91 mutex_unlock(&inode_info->lower_file_mutex);