diff options
Diffstat (limited to 'fs/ecryptfs')
-rw-r--r-- | fs/ecryptfs/crypto.c | 9 | ||||
-rw-r--r-- | fs/ecryptfs/inode.c | 20 | ||||
-rw-r--r-- | fs/ecryptfs/main.c | 5 | ||||
-rw-r--r-- | fs/ecryptfs/messaging.c | 1 | ||||
-rw-r--r-- | fs/ecryptfs/super.c | 1 |
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; |
815 | out_unlock: | ||
816 | mutex_unlock(&crypt_stat->cs_tfm_mutex); | ||
817 | out: | 817 | out: |
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); | ||
454 | out_unlock: | 442 | out_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); |