f2fs: fix setattr project check upon fssetxattr ioctl
authorWang Shilong <wangshilong1991@gmail.com>
Mon, 10 Sep 2018 23:54:21 +0000 (08:54 +0900)
committerJaegeuk Kim <jaegeuk@kernel.org>
Fri, 26 Oct 2018 18:21:52 +0000 (11:21 -0700)
commit5f170bdd7b9a0f935864112ef6aaea543a9d100e
treedf901bbf0c16999f825f2a6ec855b14c2c25576b
parent27fb7396f1d97004cf9597c6c6fcbec1f678fa97
f2fs: fix setattr project check upon fssetxattr ioctl

Currently, project quota could be changed by fssetxattr
ioctl, and existed permission check inode_owner_or_capable()
is obviously not enough, just think that common users could
change project id of file, that could make users to
break project quota easily.

This patch try to follow same regular of xfs project
quota:

"Project Quota ID state is only allowed to change from
within the init namespace. Enforce that restriction only
if we are trying to change the quota ID state.
Everything else is allowed in user namespaces."

Besides that, check and set project id'state should
be an atomic operation, protect whole operation with
inode lock.

Signed-off-by: Wang Shilong <wshilong@ddn.com>
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/file.c