summaryrefslogtreecommitdiff
authorJianxin Pan <jianxin.pan@amlogic.com>2019-03-13 08:25:03 (GMT)
committer Gerrit Code Review <gituser@scgit.amlogic.com>2019-03-13 08:25:03 (GMT)
commit755c783ef10bdff05609597d559b6282faf04c5a (patch)
treefa947c94df7442d6c5d61cc4bf02ba66c3204792
parent00caf231a9ac21116b4ce18979442f6ae11ce120 (diff)
parente5805b4410dcacbc9e11b6dc75368375b848e22d (diff)
downloadcommon-755c783ef10bdff05609597d559b6282faf04c5a.zip
common-755c783ef10bdff05609597d559b6282faf04c5a.tar.gz
common-755c783ef10bdff05609597d559b6282faf04c5a.tar.bz2
Merge "ANDROID: sdcardfs: Change current->fs under lock" into amlogic-4.9-dev
Diffstat
-rw-r--r--fs/sdcardfs/inode.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/fs/sdcardfs/inode.c b/fs/sdcardfs/inode.c
index 84df23ac0..57bdc68 100644
--- a/fs/sdcardfs/inode.c
+++ b/fs/sdcardfs/inode.c
@@ -95,8 +95,10 @@ static int sdcardfs_create(struct inode *dir, struct dentry *dentry,
err = -ENOMEM;
goto out_unlock;
}
+ copied_fs->umask = 0;
+ task_lock(current);
current->fs = copied_fs;
- current->fs->umask = 0;
+ task_unlock(current);
err = vfs_create2(lower_dentry_mnt, d_inode(lower_parent_dentry), lower_dentry, mode, want_excl);
if (err)
goto out;
@@ -110,7 +112,9 @@ static int sdcardfs_create(struct inode *dir, struct dentry *dentry,
fixup_lower_ownership(dentry, dentry->d_name.name);
out:
+ task_lock(current);
current->fs = saved_fs;
+ task_unlock(current);
free_fs_struct(copied_fs);
out_unlock:
unlock_dir(lower_parent_dentry);
@@ -316,8 +320,10 @@ static int sdcardfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode
unlock_dir(lower_parent_dentry);
goto out_unlock;
}
+ copied_fs->umask = 0;
+ task_lock(current);
current->fs = copied_fs;
- current->fs->umask = 0;
+ task_unlock(current);
err = vfs_mkdir2(lower_mnt, d_inode(lower_parent_dentry), lower_dentry, mode);
if (err) {
@@ -377,7 +383,10 @@ static int sdcardfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode
}
}
out:
+ task_lock(current);
current->fs = saved_fs;
+ task_unlock(current);
+
free_fs_struct(copied_fs);
out_unlock:
sdcardfs_put_lower_path(dentry, &lower_path);