Message ID | 20170706022326.52594-1-jaegeuk@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 2017/7/6 10:23, Jaegeuk Kim wrote: > This patch allows atomic/volatile ioctls for sqlite under sdcardfs. Out of curiosity, we will lose some capable when passing through sdcardfs? Thanks, > > Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>> --- > fs/f2fs/file.c | 15 --------------- > 1 file changed, 15 deletions(-) > > diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c > index f5d6357e8360..dd8f5d2caa48 100644 > --- a/fs/f2fs/file.c > +++ b/fs/f2fs/file.c > @@ -1587,9 +1587,6 @@ static int f2fs_ioc_start_atomic_write(struct file *filp) > struct inode *inode = file_inode(filp); > int ret; > > - if (!inode_owner_or_capable(inode)) > - return -EACCES; > - > if (!S_ISREG(inode->i_mode)) > return -EINVAL; > > @@ -1636,9 +1633,6 @@ static int f2fs_ioc_commit_atomic_write(struct file *filp) > struct inode *inode = file_inode(filp); > int ret; > > - if (!inode_owner_or_capable(inode)) > - return -EACCES; > - > ret = mnt_want_write_file(filp); > if (ret) > return ret; > @@ -1672,9 +1666,6 @@ static int f2fs_ioc_start_volatile_write(struct file *filp) > struct inode *inode = file_inode(filp); > int ret; > > - if (!inode_owner_or_capable(inode)) > - return -EACCES; > - > if (!S_ISREG(inode->i_mode)) > return -EINVAL; > > @@ -1707,9 +1698,6 @@ static int f2fs_ioc_release_volatile_write(struct file *filp) > struct inode *inode = file_inode(filp); > int ret; > > - if (!inode_owner_or_capable(inode)) > - return -EACCES; > - > ret = mnt_want_write_file(filp); > if (ret) > return ret; > @@ -1736,9 +1724,6 @@ static int f2fs_ioc_abort_volatile_write(struct file *filp) > struct inode *inode = file_inode(filp); > int ret; > > - if (!inode_owner_or_capable(inode)) > - return -EACCES; > - > ret = mnt_want_write_file(filp); > if (ret) > return ret; >
On 07/07, Chao Yu wrote: > On 2017/7/6 10:23, Jaegeuk Kim wrote: > > This patch allows atomic/volatile ioctls for sqlite under sdcardfs. > > Out of curiosity, we will lose some capable when passing through sdcardfs? I don't think so. But, it seems a test applicaion tries to access database from difference uid. Thanks, > > Thanks, > > > > > Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>> --- > > fs/f2fs/file.c | 15 --------------- > > 1 file changed, 15 deletions(-) > > > > diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c > > index f5d6357e8360..dd8f5d2caa48 100644 > > --- a/fs/f2fs/file.c > > +++ b/fs/f2fs/file.c > > @@ -1587,9 +1587,6 @@ static int f2fs_ioc_start_atomic_write(struct file *filp) > > struct inode *inode = file_inode(filp); > > int ret; > > > > - if (!inode_owner_or_capable(inode)) > > - return -EACCES; > > - > > if (!S_ISREG(inode->i_mode)) > > return -EINVAL; > > > > @@ -1636,9 +1633,6 @@ static int f2fs_ioc_commit_atomic_write(struct file *filp) > > struct inode *inode = file_inode(filp); > > int ret; > > > > - if (!inode_owner_or_capable(inode)) > > - return -EACCES; > > - > > ret = mnt_want_write_file(filp); > > if (ret) > > return ret; > > @@ -1672,9 +1666,6 @@ static int f2fs_ioc_start_volatile_write(struct file *filp) > > struct inode *inode = file_inode(filp); > > int ret; > > > > - if (!inode_owner_or_capable(inode)) > > - return -EACCES; > > - > > if (!S_ISREG(inode->i_mode)) > > return -EINVAL; > > > > @@ -1707,9 +1698,6 @@ static int f2fs_ioc_release_volatile_write(struct file *filp) > > struct inode *inode = file_inode(filp); > > int ret; > > > > - if (!inode_owner_or_capable(inode)) > > - return -EACCES; > > - > > ret = mnt_want_write_file(filp); > > if (ret) > > return ret; > > @@ -1736,9 +1724,6 @@ static int f2fs_ioc_abort_volatile_write(struct file *filp) > > struct inode *inode = file_inode(filp); > > int ret; > > > > - if (!inode_owner_or_capable(inode)) > > - return -EACCES; > > - > > ret = mnt_want_write_file(filp); > > if (ret) > > return ret; > >
On 2017/7/7 8:16, Jaegeuk Kim wrote: > On 07/07, Chao Yu wrote: >> On 2017/7/6 10:23, Jaegeuk Kim wrote: >>> This patch allows atomic/volatile ioctls for sqlite under sdcardfs. >> >> Out of curiosity, we will lose some capable when passing through sdcardfs? > > I don't think so. But, it seems a test applicaion tries to access database from > difference uid. Oh, is that really allowed? if the sqlite database is public in sdcard directory, application needs to apply WRITE_EXTERNAL_STORAGE in order to add itself to sdcard_rw group, then it can access the database. Right? Thanks, > > Thanks, > >> >> Thanks, >> >>> >>> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>> --- >>> fs/f2fs/file.c | 15 --------------- >>> 1 file changed, 15 deletions(-) >>> >>> diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c >>> index f5d6357e8360..dd8f5d2caa48 100644 >>> --- a/fs/f2fs/file.c >>> +++ b/fs/f2fs/file.c >>> @@ -1587,9 +1587,6 @@ static int f2fs_ioc_start_atomic_write(struct file *filp) >>> struct inode *inode = file_inode(filp); >>> int ret; >>> >>> - if (!inode_owner_or_capable(inode)) >>> - return -EACCES; >>> - >>> if (!S_ISREG(inode->i_mode)) >>> return -EINVAL; >>> >>> @@ -1636,9 +1633,6 @@ static int f2fs_ioc_commit_atomic_write(struct file *filp) >>> struct inode *inode = file_inode(filp); >>> int ret; >>> >>> - if (!inode_owner_or_capable(inode)) >>> - return -EACCES; >>> - >>> ret = mnt_want_write_file(filp); >>> if (ret) >>> return ret; >>> @@ -1672,9 +1666,6 @@ static int f2fs_ioc_start_volatile_write(struct file *filp) >>> struct inode *inode = file_inode(filp); >>> int ret; >>> >>> - if (!inode_owner_or_capable(inode)) >>> - return -EACCES; >>> - >>> if (!S_ISREG(inode->i_mode)) >>> return -EINVAL; >>> >>> @@ -1707,9 +1698,6 @@ static int f2fs_ioc_release_volatile_write(struct file *filp) >>> struct inode *inode = file_inode(filp); >>> int ret; >>> >>> - if (!inode_owner_or_capable(inode)) >>> - return -EACCES; >>> - >>> ret = mnt_want_write_file(filp); >>> if (ret) >>> return ret; >>> @@ -1736,9 +1724,6 @@ static int f2fs_ioc_abort_volatile_write(struct file *filp) >>> struct inode *inode = file_inode(filp); >>> int ret; >>> >>> - if (!inode_owner_or_capable(inode)) >>> - return -EACCES; >>> - >>> ret = mnt_want_write_file(filp); >>> if (ret) >>> return ret; >>>
On Wed, Jul 05, 2017 at 07:23:26PM -0700, Jaegeuk Kim wrote: > This patch allows atomic/volatile ioctls for sqlite under sdcardfs. > > Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> > --- > fs/f2fs/file.c | 15 --------------- > 1 file changed, 15 deletions(-) > > diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c > index f5d6357e8360..dd8f5d2caa48 100644 > --- a/fs/f2fs/file.c > +++ b/fs/f2fs/file.c > @@ -1587,9 +1587,6 @@ static int f2fs_ioc_start_atomic_write(struct file *filp) > struct inode *inode = file_inode(filp); > int ret; > > - if (!inode_owner_or_capable(inode)) > - return -EACCES; > - Why not require that the file be open for writing (FMODE_WRITE)?
On 07/07, gaoxiang (P) wrote: > Hi, > I think Sdcardfs should override task_struct cred fsuid/fsgid before calling the underlay fs operation. > And it seems sdcardfs implementations misses override cred fsuid/fsgid before the ioctl operation. Oh, good catch! Thank you. ;) > > Thanks. > > -----邮件原件----- > 发件人: Chao Yu [mailto:chao@kernel.org] > 发送时间: 2017年7月7日 8:58 > 收件人: Jaegeuk Kim > 抄送: linux-fsdevel@vger.kernel.org; linux-kernel@vger.kernel.org; linux-f2fs-devel@lists.sourceforge.net > 主题: Re: [f2fs-dev] [PATCH] f2fs: relax permission for atomic/volatile ioctls > > On 2017/7/7 8:16, Jaegeuk Kim wrote: > > On 07/07, Chao Yu wrote: > >> On 2017/7/6 10:23, Jaegeuk Kim wrote: > >>> This patch allows atomic/volatile ioctls for sqlite under sdcardfs. > >> > >> Out of curiosity, we will lose some capable when passing through sdcardfs? > > > > I don't think so. But, it seems a test applicaion tries to access database from > > difference uid. > > Oh, is that really allowed? if the sqlite database is public in sdcard directory, > application needs to apply WRITE_EXTERNAL_STORAGE in order to add itself to > sdcard_rw group, then it can access the database. Right? > > Thanks, > > > > > Thanks, > > > >> > >> Thanks, > >> > >>> > >>> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>> --- > >>> fs/f2fs/file.c | 15 --------------- > >>> 1 file changed, 15 deletions(-) > >>> > >>> diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c > >>> index f5d6357e8360..dd8f5d2caa48 100644 > >>> --- a/fs/f2fs/file.c > >>> +++ b/fs/f2fs/file.c > >>> @@ -1587,9 +1587,6 @@ static int f2fs_ioc_start_atomic_write(struct file *filp) > >>> struct inode *inode = file_inode(filp); > >>> int ret; > >>> > >>> - if (!inode_owner_or_capable(inode)) > >>> - return -EACCES; > >>> - > >>> if (!S_ISREG(inode->i_mode)) > >>> return -EINVAL; > >>> > >>> @@ -1636,9 +1633,6 @@ static int f2fs_ioc_commit_atomic_write(struct file *filp) > >>> struct inode *inode = file_inode(filp); > >>> int ret; > >>> > >>> - if (!inode_owner_or_capable(inode)) > >>> - return -EACCES; > >>> - > >>> ret = mnt_want_write_file(filp); > >>> if (ret) > >>> return ret; > >>> @@ -1672,9 +1666,6 @@ static int f2fs_ioc_start_volatile_write(struct file *filp) > >>> struct inode *inode = file_inode(filp); > >>> int ret; > >>> > >>> - if (!inode_owner_or_capable(inode)) > >>> - return -EACCES; > >>> - > >>> if (!S_ISREG(inode->i_mode)) > >>> return -EINVAL; > >>> > >>> @@ -1707,9 +1698,6 @@ static int f2fs_ioc_release_volatile_write(struct file *filp) > >>> struct inode *inode = file_inode(filp); > >>> int ret; > >>> > >>> - if (!inode_owner_or_capable(inode)) > >>> - return -EACCES; > >>> - > >>> ret = mnt_want_write_file(filp); > >>> if (ret) > >>> return ret; > >>> @@ -1736,9 +1724,6 @@ static int f2fs_ioc_abort_volatile_write(struct file *filp) > >>> struct inode *inode = file_inode(filp); > >>> int ret; > >>> > >>> - if (!inode_owner_or_capable(inode)) > >>> - return -EACCES; > >>> - > >>> ret = mnt_want_write_file(filp); > >>> if (ret) > >>> return ret; > >>> > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > Linux-f2fs-devel mailing list > Linux-f2fs-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
-----邮件原件----- 发件人: Jaegeuk Kim [mailto:jaegeuk@kernel.org] 发送时间: 2017年7月7日 10:12 收件人: gaoxiang (P) 抄送: Chao Yu; linux-fsdevel@vger.kernel.org; linux-kernel@vger.kernel.org; linux-f2fs-devel@lists.sourceforge.net 主题: Re: 答复: [f2fs-dev] [PATCH] f2fs: relax permission for atomic/volatile ioctls On 07/07, gaoxiang (P) wrote: > Hi, > I think Sdcardfs should override task_struct cred fsuid/fsgid before calling the underlay fs operation. > And it seems sdcardfs implementations misses override cred fsuid/fsgid before the ioctl operation. Oh, good catch! Thank you. ;) ;) We are fixing it internally. And the AOSP sdcardfs patch would be https://android-review.googlesource.com/#/c/431259/ It is none of f2fs business. :) :) Thanks. > > Thanks. > > -----邮件原件----- > 发件人: Chao Yu [mailto:chao@kernel.org] > 发送时间: 2017年7月7日 8:58 > 收件人: Jaegeuk Kim > 抄送: linux-fsdevel@vger.kernel.org; linux-kernel@vger.kernel.org; > linux-f2fs-devel@lists.sourceforge.net > 主题: Re: [f2fs-dev] [PATCH] f2fs: relax permission for atomic/volatile > ioctls > > On 2017/7/7 8:16, Jaegeuk Kim wrote: > > On 07/07, Chao Yu wrote: > >> On 2017/7/6 10:23, Jaegeuk Kim wrote: > >>> This patch allows atomic/volatile ioctls for sqlite under sdcardfs. > >> > >> Out of curiosity, we will lose some capable when passing through sdcardfs? > > > > I don't think so. But, it seems a test applicaion tries to access > > database from difference uid. > > Oh, is that really allowed? if the sqlite database is public in sdcard > directory, application needs to apply WRITE_EXTERNAL_STORAGE in order > to add itself to sdcard_rw group, then it can access the database. Right? > > Thanks, > > > > > Thanks, > > > >> > >> Thanks, > >> > >>> > >>> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>> --- > >>> fs/f2fs/file.c | 15 --------------- > >>> 1 file changed, 15 deletions(-) > >>> > >>> diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index > >>> f5d6357e8360..dd8f5d2caa48 100644 > >>> --- a/fs/f2fs/file.c > >>> +++ b/fs/f2fs/file.c > >>> @@ -1587,9 +1587,6 @@ static int f2fs_ioc_start_atomic_write(struct file *filp) > >>> struct inode *inode = file_inode(filp); > >>> int ret; > >>> > >>> - if (!inode_owner_or_capable(inode)) > >>> - return -EACCES; > >>> - > >>> if (!S_ISREG(inode->i_mode)) > >>> return -EINVAL; > >>> > >>> @@ -1636,9 +1633,6 @@ static int f2fs_ioc_commit_atomic_write(struct file *filp) > >>> struct inode *inode = file_inode(filp); > >>> int ret; > >>> > >>> - if (!inode_owner_or_capable(inode)) > >>> - return -EACCES; > >>> - > >>> ret = mnt_want_write_file(filp); > >>> if (ret) > >>> return ret; > >>> @@ -1672,9 +1666,6 @@ static int f2fs_ioc_start_volatile_write(struct file *filp) > >>> struct inode *inode = file_inode(filp); > >>> int ret; > >>> > >>> - if (!inode_owner_or_capable(inode)) > >>> - return -EACCES; > >>> - > >>> if (!S_ISREG(inode->i_mode)) > >>> return -EINVAL; > >>> > >>> @@ -1707,9 +1698,6 @@ static int f2fs_ioc_release_volatile_write(struct file *filp) > >>> struct inode *inode = file_inode(filp); > >>> int ret; > >>> > >>> - if (!inode_owner_or_capable(inode)) > >>> - return -EACCES; > >>> - > >>> ret = mnt_want_write_file(filp); > >>> if (ret) > >>> return ret; > >>> @@ -1736,9 +1724,6 @@ static int f2fs_ioc_abort_volatile_write(struct file *filp) > >>> struct inode *inode = file_inode(filp); > >>> int ret; > >>> > >>> - if (!inode_owner_or_capable(inode)) > >>> - return -EACCES; > >>> - > >>> ret = mnt_want_write_file(filp); > >>> if (ret) > >>> return ret; > >>> > > ---------------------------------------------------------------------- > -------- Check out the vibrant tech community on one of the world's > most engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > Linux-f2fs-devel mailing list > Linux-f2fs-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index f5d6357e8360..dd8f5d2caa48 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -1587,9 +1587,6 @@ static int f2fs_ioc_start_atomic_write(struct file *filp) struct inode *inode = file_inode(filp); int ret; - if (!inode_owner_or_capable(inode)) - return -EACCES; - if (!S_ISREG(inode->i_mode)) return -EINVAL; @@ -1636,9 +1633,6 @@ static int f2fs_ioc_commit_atomic_write(struct file *filp) struct inode *inode = file_inode(filp); int ret; - if (!inode_owner_or_capable(inode)) - return -EACCES; - ret = mnt_want_write_file(filp); if (ret) return ret; @@ -1672,9 +1666,6 @@ static int f2fs_ioc_start_volatile_write(struct file *filp) struct inode *inode = file_inode(filp); int ret; - if (!inode_owner_or_capable(inode)) - return -EACCES; - if (!S_ISREG(inode->i_mode)) return -EINVAL; @@ -1707,9 +1698,6 @@ static int f2fs_ioc_release_volatile_write(struct file *filp) struct inode *inode = file_inode(filp); int ret; - if (!inode_owner_or_capable(inode)) - return -EACCES; - ret = mnt_want_write_file(filp); if (ret) return ret; @@ -1736,9 +1724,6 @@ static int f2fs_ioc_abort_volatile_write(struct file *filp) struct inode *inode = file_inode(filp); int ret; - if (!inode_owner_or_capable(inode)) - return -EACCES; - ret = mnt_want_write_file(filp); if (ret) return ret;
This patch allows atomic/volatile ioctls for sqlite under sdcardfs. Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> --- fs/f2fs/file.c | 15 --------------- 1 file changed, 15 deletions(-)