mirror of
https://github.com/torvalds/linux.git
synced 2024-12-27 05:11:48 +00:00
fat: truncate inode timestamp updates in setattr
setattr_copy can't truncate timestamps correctly for msdos/vfat, so truncate and copy them ourselves. Link: http://lkml.kernel.org/r/a2b4701b1125573fafaeaae6802050ca86d6f8cc.1538363961.git.sorenson@redhat.com Signed-off-by: Frank Sorenson <sorenson@redhat.com> Acked-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
cd83f6b194
commit
22ea4eba63
@ -542,6 +542,18 @@ int fat_setattr(struct dentry *dentry, struct iattr *attr)
|
||||
up_write(&MSDOS_I(inode)->truncate_lock);
|
||||
}
|
||||
|
||||
/*
|
||||
* setattr_copy can't truncate these appropriately, so we'll
|
||||
* copy them ourselves
|
||||
*/
|
||||
if (attr->ia_valid & ATTR_ATIME)
|
||||
fat_truncate_time(inode, &attr->ia_atime, S_ATIME);
|
||||
if (attr->ia_valid & ATTR_CTIME)
|
||||
fat_truncate_time(inode, &attr->ia_ctime, S_CTIME);
|
||||
if (attr->ia_valid & ATTR_MTIME)
|
||||
fat_truncate_time(inode, &attr->ia_mtime, S_MTIME);
|
||||
attr->ia_valid &= ~(ATTR_ATIME|ATTR_CTIME|ATTR_MTIME);
|
||||
|
||||
setattr_copy(inode, attr);
|
||||
mark_inode_dirty(inode);
|
||||
out:
|
||||
|
Loading…
Reference in New Issue
Block a user