lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 11 Aug 2021 18:48:23 -0600
From:   Andreas Dilger <adilger@...ger.ca>
To:     "Darrick J. Wong" <djwong@...nel.org>
Cc:     Theodore Ts'o <tytso@....edu>,
        linux-ext4 <linux-ext4@...r.kernel.org>
Subject: Re: [PATCH] mke2fs: warn about missing y2038 support when formatting
 fresh ext4 fs

On Aug 11, 2021, at 5:32 PM, Darrick J. Wong <djwong@...nel.org> wrote:
> 
> From: Darrick J. Wong <djwong@...nel.org>
> 
> Filesystems with 128-byte inodes do not support timestamps beyond the
> year 2038.  Since we're now less than 16.5 years away from that point,
> it's time to start warning users about this lack of support when they
> format an ext4 filesystem with small inodes.
> 
> First, change the mke2fs.conf file to specify 256-byte inodes even for
> small filesystems, then add a warning to mke2fs itself if someone is
> trying to make us format an ext4 filesystem with 128-byte inodes.
> 
> Note that we /don't/ warn about these things if the user has signalled
> that they want an old format such as ext2, ext3, or hurd.  Everyone
> should know by now that those are legacy.
> 
> Signed-off-by: Darrick J. Wong <djwong@...nel.org>

Reviewed-by: Andreas Dilger <adilger@...ger.ca>

> ---
> misc/mke2fs.c       |   35 +++++++++++++++++++++++++++++++++++
> misc/mke2fs.conf.in |    4 ++--
> 2 files changed, 37 insertions(+), 2 deletions(-)
> 
> diff --git a/misc/mke2fs.c b/misc/mke2fs.c
> index 92003e11..b16880c2 100644
> --- a/misc/mke2fs.c
> +++ b/misc/mke2fs.c
> @@ -1537,6 +1537,30 @@ static int get_device_geometry(const char *file,
> }
> #endif
> 
> +/*
> + * Returns true if the user is forcing an old format (e.g. ext2, ext3).
> + *
> + * If there is no fs_types list, the user invoked us with no explicit type and
> + * gets the default (ext4) format.  If we find the latest format (ext4) in the
> + * type list, some combination of program name and -T argument put us in ext4
> + * mode.  Anything else (ext2, ext3, hurd) and we return false.
> + */
> +static inline int
> +old_format_forced(char **fs_types)
> +{
> +	int found_ext4 = 0;
> +	int i;
> +
> +	if (!fs_types)
> +		return 0;
> +
> +	for (i = 0; fs_types[i]; i++)
> +		if (!strcmp(fs_types[i], "ext4"))
> +			found_ext4 = 1;
> +
> +	return !found_ext4;
> +}
> +
> static void PRS(int argc, char *argv[])
> {
> 	int		b, c, flags;
> @@ -2603,6 +2627,17 @@ static void PRS(int argc, char *argv[])
> 		exit(1);
> 	}
> 
> +	/* If the user didn't tell us to format with an old ondisk format... */
> +	if (!old_format_forced(fs_types)) {
> +		/*
> +		 * ...warn them that filesystems with 128-byte inodes will not
> +		 * work properly beyond 2038.
> +		 */
> +		if (inode_size == EXT2_GOOD_OLD_INODE_SIZE)
> +			printf(
> +_("128-byte inodes cannot handle dates beyond 2038 and are deprecated\n"));
> +	}
> +
> 	/* Make sure number of inodes specified will fit in 32 bits */
> 	if (num_inodes == 0) {
> 		unsigned long long n;
> diff --git a/misc/mke2fs.conf.in b/misc/mke2fs.conf.in
> index 01e35cf8..2fa1a824 100644
> --- a/misc/mke2fs.conf.in
> +++ b/misc/mke2fs.conf.in
> @@ -16,12 +16,12 @@
> 	}
> 	small = {
> 		blocksize = 1024
> -		inode_size = 128
> +		inode_size = 256
> 		inode_ratio = 4096
> 	}
> 	floppy = {
> 		blocksize = 1024
> -		inode_size = 128
> +		inode_size = 256
> 		inode_ratio = 8192
> 	}
> 	big = {


Cheers, Andreas






Download attachment "signature.asc" of type "application/pgp-signature" (874 bytes)

Powered by blists - more mailing lists