aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>2014-02-21 04:02:35 +0900
committerDaniel Phillips <daniel@tux3.org>2014-02-21 04:02:35 +0900
commit984289419b59cafe0d3e46b490105947b18a7366 (patch)
treeb3e1ad77cf3869d8e8703af22daeac5da9886723
parent9eac49c1499f611590324fb9ce914726771ef9dd (diff)
downloadlinux-tux3-984289419b59cafe0d3e46b490105947b18a7366.tar.gz
tux3: Use i_size_read() in kernel
If we are not holding inode->i_mutex, we should use i_size_read(). Because inode->i_size is 64bits, so read can race with write on 32bits arch. Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
-rw-r--r--fs/tux3/inode.c2
-rw-r--r--fs/tux3/writeback_iattrfork.c2
2 files changed, 2 insertions, 2 deletions
diff --git a/fs/tux3/inode.c b/fs/tux3/inode.c
index e6d1082c931dba..b31fea57ae95fb 100644
--- a/fs/tux3/inode.c
+++ b/fs/tux3/inode.c
@@ -833,7 +833,7 @@ int tux3_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat
*
* But, it is purely unnecessary overhead.
*/
- stat->blocks = ALIGN(inode->i_size, sb->blocksize) >> 9;
+ stat->blocks = ALIGN(i_size_read(inode), sb->blocksize) >> 9;
return 0;
}
diff --git a/fs/tux3/writeback_iattrfork.c b/fs/tux3/writeback_iattrfork.c
index d2990c3dfed0f2..724a2344d6ca23 100644
--- a/fs/tux3/writeback_iattrfork.c
+++ b/fs/tux3/writeback_iattrfork.c
@@ -36,7 +36,7 @@ static void idata_copy(struct inode *inode, struct tux3_iattr_data *idata)
idata->i_gid = i_gid_read(inode);
idata->i_nlink = inode->i_nlink;
idata->i_rdev = inode->i_rdev;
- idata->i_size = inode->i_size;
+ idata->i_size = i_size_read(inode);
// idata->i_atime = inode->i_atime;
idata->i_mtime = inode->i_mtime;
idata->i_ctime = inode->i_ctime;