Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -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 { \
	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