summaryrefslogtreecommitdiffstats
path: root/fs/afs/inode.c
diff options
context:
space:
mode:
authorJeff Layton <jlayton@kernel.org>2021-02-25 15:04:16 -0500
committerAl Viro <viro@zeniv.linux.org.uk>2021-03-08 10:19:37 -0500
commited94f87c2b123241ae5644cf82327e2da653adb6 (patch)
treeae2a0f3cc394f5ef0be1f3ab2ebf79914fd0fb84 /fs/afs/inode.c
parent3e10a15ffc8d77f05e655d14fd48c0b790dede35 (diff)
downloadlinux-ed94f87c2b123241ae5644cf82327e2da653adb6.tar.gz
linux-ed94f87c2b123241ae5644cf82327e2da653adb6.tar.bz2
linux-ed94f87c2b123241ae5644cf82327e2da653adb6.zip
ceph: don't allow type or device number to change on non-I_NEW inodes
Al pointed out that a malicious or broken MDS could change the type or device number of a given inode number. It may also be possible for the MDS to reuse an old inode number. Ensure that we never allow fill_inode to change the type part of the i_mode or the i_rdev unless I_NEW is set. Throw warnings if the MDS ever changes these on us mid-stream, and return an error. Don't set i_rdev directly, and rely on init_special_inode to do it. Also, fix up error handling in the callers of ceph_get_inode. In handle_cap_grant, check for and warn if the inode type changes, and only overwrite the mode if it didn't. Reported-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/afs/inode.c')
0 files changed, 0 insertions, 0 deletions