alistair23-linux/fs/ext4
Daeho Jeong 93e3b4e663 ext4: reinforce check of i_dtime when clearing high fields of uid and gid
Now, ext4_do_update_inode() clears high 16-bit fields of uid/gid
of deleted and evicted inode to fix up interoperability with old
kernels. However, it checks only i_dtime of an inode to determine
whether the inode was deleted and evicted, and this is very risky,
because i_dtime can be used for the pointer maintaining orphan inode
list, too. We need to further check whether the i_dtime is being
used for the orphan inode list even if the i_dtime is not NULL.

We found that high 16-bit fields of uid/gid of inode are unintentionally
and permanently cleared when the inode truncation is just triggered,
but not finished, and the inode metadata, whose high uid/gid bits are
cleared, is written on disk, and the sudden power-off follows that
in order.

Cc: stable@vger.kernel.org
Signed-off-by: Daeho Jeong <daeho.jeong@samsung.com>
Signed-off-by: Hobin Woo <hobin.woo@samsung.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2016-09-05 22:56:10 -04:00
..
acl.c
acl.h
balloc.c The major change this cycle is deleting ext4's copy of the file system 2016-07-26 18:35:55 -07:00
bitmap.c
block_validity.c
dir.c ext4 crypto: migrate into vfs's crypto engine 2016-07-10 14:01:03 -04:00
ext4.h ext4 crypto: migrate into vfs's crypto engine 2016-07-10 14:01:03 -04:00
ext4_extents.h
ext4_jbd2.c
ext4_jbd2.h ext4: optimize ext4_should_retry_alloc() to improve ENOSPC performance 2016-06-26 18:24:01 -04:00
extents.c ext4: verify extent header depth 2016-07-15 00:22:07 -04:00
extents_status.c ext4: remove trailing \n from ext4_warning/ext4_error calls 2016-04-27 01:11:21 -04:00
extents_status.h
file.c Merge branch 'akpm' (patches from Andrew) 2016-07-26 19:55:54 -07:00
fsync.c ext4: respect the nobarrier mount option in nojournal mode 2016-06-26 18:25:01 -04:00
hash.c
ialloc.c The major change this cycle is deleting ext4's copy of the file system 2016-07-26 18:35:55 -07:00
indirect.c ext4: refactor direct IO code 2016-05-13 00:44:16 -04:00
inline.c ext4 crypto: migrate into vfs's crypto engine 2016-07-10 14:01:03 -04:00
inode.c ext4: reinforce check of i_dtime when clearing high fields of uid and gid 2016-09-05 22:56:10 -04:00
ioctl.c ext4 crypto: migrate into vfs's crypto engine 2016-07-10 14:01:03 -04:00
Kconfig ext4 crypto: migrate into vfs's crypto engine 2016-07-10 14:01:03 -04:00
Makefile ext4 crypto: migrate into vfs's crypto engine 2016-07-10 14:01:03 -04:00
mballoc.c Merge branch 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2016-07-28 12:59:05 -07:00
mballoc.h
migrate.c
mmp.c fs: have submit_bh users pass in op and flags separately 2016-06-07 13:41:38 -06:00
move_extent.c ext4: enforce online defrag restriction for encrypted files 2016-08-29 15:45:11 -04:00
namei.c The major change this cycle is deleting ext4's copy of the file system 2016-07-26 18:35:55 -07:00
page-io.c The major change this cycle is deleting ext4's copy of the file system 2016-07-26 18:35:55 -07:00
readpage.c Merge branch 'akpm' (patches from Andrew) 2016-07-26 19:55:54 -07:00
resize.c ext4: remove trailing \n from ext4_warning/ext4_error calls 2016-04-27 01:11:21 -04:00
super.c Fix bugs that could cause kernel deadlocks or file system corruption 2016-08-29 12:37:11 -07:00
symlink.c ext4 crypto: migrate into vfs's crypto engine 2016-07-10 14:01:03 -04:00
sysfs.c drop redundant ->owner initializations 2016-05-29 19:08:00 -04:00
truncate.h
xattr.c ext4: factor out loop for freeing inode xattr space 2016-08-29 15:44:11 -04:00
xattr.h ext4: reserve xattr index for the Hurd 2016-07-31 23:38:36 -04:00
xattr_security.c switch xattr_handler->set() to passing dentry and inode separately 2016-05-27 15:39:43 -04:00
xattr_trusted.c switch xattr_handler->set() to passing dentry and inode separately 2016-05-27 15:39:43 -04:00
xattr_user.c switch xattr_handler->set() to passing dentry and inode separately 2016-05-27 15:39:43 -04:00