author | Jianxin 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) |
commit | 755c783ef10bdff05609597d559b6282faf04c5a (patch) | |
tree | fa947c94df7442d6c5d61cc4bf02ba66c3204792 | |
parent | 00caf231a9ac21116b4ce18979442f6ae11ce120 (diff) | |
parent | e5805b4410dcacbc9e11b6dc75368375b848e22d (diff) | |
download | common-755c783ef10bdff05609597d559b6282faf04c5a.zip common-755c783ef10bdff05609597d559b6282faf04c5a.tar.gz common-755c783ef10bdff05609597d559b6282faf04c5a.tar.bz2 |
Merge "ANDROID: sdcardfs: Change current->fs under lock" into amlogic-4.9-dev
-rw-r--r-- | fs/sdcardfs/inode.c | 13 |
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); |