|
@@ -379,9 +379,11 @@ static struct dentry *ecryptfs_lookup(struct inode *ecryptfs_dir_inode,
|
|
goto out_d_drop;
|
|
goto out_d_drop;
|
|
}
|
|
}
|
|
lower_dir_dentry = ecryptfs_dentry_to_lower(ecryptfs_dentry->d_parent);
|
|
lower_dir_dentry = ecryptfs_dentry_to_lower(ecryptfs_dentry->d_parent);
|
|
|
|
+ mutex_lock(&lower_dir_dentry->d_inode->i_mutex);
|
|
lower_dentry = lookup_one_len(ecryptfs_dentry->d_name.name,
|
|
lower_dentry = lookup_one_len(ecryptfs_dentry->d_name.name,
|
|
lower_dir_dentry,
|
|
lower_dir_dentry,
|
|
ecryptfs_dentry->d_name.len);
|
|
ecryptfs_dentry->d_name.len);
|
|
|
|
+ mutex_unlock(&lower_dir_dentry->d_inode->i_mutex);
|
|
if (IS_ERR(lower_dentry)) {
|
|
if (IS_ERR(lower_dentry)) {
|
|
rc = PTR_ERR(lower_dentry);
|
|
rc = PTR_ERR(lower_dentry);
|
|
printk(KERN_ERR "%s: lookup_one_len() returned [%d] on "
|
|
printk(KERN_ERR "%s: lookup_one_len() returned [%d] on "
|
|
@@ -406,9 +408,11 @@ static struct dentry *ecryptfs_lookup(struct inode *ecryptfs_dir_inode,
|
|
"filename; rc = [%d]\n", __func__, rc);
|
|
"filename; rc = [%d]\n", __func__, rc);
|
|
goto out_d_drop;
|
|
goto out_d_drop;
|
|
}
|
|
}
|
|
|
|
+ mutex_lock(&lower_dir_dentry->d_inode->i_mutex);
|
|
lower_dentry = lookup_one_len(encrypted_and_encoded_name,
|
|
lower_dentry = lookup_one_len(encrypted_and_encoded_name,
|
|
lower_dir_dentry,
|
|
lower_dir_dentry,
|
|
encrypted_and_encoded_name_size - 1);
|
|
encrypted_and_encoded_name_size - 1);
|
|
|
|
+ mutex_unlock(&lower_dir_dentry->d_inode->i_mutex);
|
|
if (IS_ERR(lower_dentry)) {
|
|
if (IS_ERR(lower_dentry)) {
|
|
rc = PTR_ERR(lower_dentry);
|
|
rc = PTR_ERR(lower_dentry);
|
|
printk(KERN_ERR "%s: lookup_one_len() returned [%d] on "
|
|
printk(KERN_ERR "%s: lookup_one_len() returned [%d] on "
|