Commit af0b44a1 authored by Eric Sandeen's avatar Eric Sandeen Committed by Theodore Ts'o

ext4: zero out nanosecond timestamps for small inodes

When nanosecond timestamp resolution isn't supported on an ext4
partition (inode size = 128), stat() appears to be returning
uninitialized garbage in the nanosecond component of timestamps.

EXT4_INODE_GET_XTIME should zero out tv_nsec when EXT4_FITS_IN_INODE
evaluates to false.
Reported-by: default avatarJordan Russell <jr-list-2010@quo.to>
Signed-off-by: default avatarEric Sandeen <sandeen@redhat.com>
Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
parent cad3f007
...@@ -693,6 +693,8 @@ do { \ ...@@ -693,6 +693,8 @@ do { \
if (EXT4_FITS_IN_INODE(raw_inode, EXT4_I(inode), xtime ## _extra)) \ if (EXT4_FITS_IN_INODE(raw_inode, EXT4_I(inode), xtime ## _extra)) \
ext4_decode_extra_time(&(inode)->xtime, \ ext4_decode_extra_time(&(inode)->xtime, \
raw_inode->xtime ## _extra); \ raw_inode->xtime ## _extra); \
else \
(inode)->xtime.tv_nsec = 0; \
} while (0) } while (0)
#define EXT4_EINODE_GET_XTIME(xtime, einode, raw_inode) \ #define EXT4_EINODE_GET_XTIME(xtime, einode, raw_inode) \
...@@ -703,6 +705,8 @@ do { \ ...@@ -703,6 +705,8 @@ do { \
if (EXT4_FITS_IN_INODE(raw_inode, einode, xtime ## _extra)) \ if (EXT4_FITS_IN_INODE(raw_inode, einode, xtime ## _extra)) \
ext4_decode_extra_time(&(einode)->xtime, \ ext4_decode_extra_time(&(einode)->xtime, \
raw_inode->xtime ## _extra); \ raw_inode->xtime ## _extra); \
else \
(einode)->xtime.tv_nsec = 0; \
} while (0) } while (0)
#define i_disk_version osd1.linux1.l_i_version #define i_disk_version osd1.linux1.l_i_version
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment