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  linux-cve-announce  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:	Tue, 10 Nov 2009 16:14:05 -0700
From:	Andreas Dilger <adilger@....com>
To:	Eric Sandeen <sandeen@...hat.com>
Cc:	ext4 development <linux-ext4@...r.kernel.org>
Subject: Re: [PATCH] libext2fs: don't swap extent-based journal backup on read

On 2009-11-10, at 13:45, Eric Sandeen wrote:
> The f_illitable_flexbg test was failing on ppc, because
> e2fsck_move_ext3_journal is doing a direct memcmp of i_block with
> s_jnl_blocks, and failing.
>
> This is because we don't swap extent data on read from disk; rather
> we do it when we access the extents.  However, ext2fs_swap_super
> was swapping s_jnl_blocks unconditionally, so these didn't match.
>
> Looks like we need to treat s_jnl_blocks the same as i_block, and
> swap it on access, not on read.  Except for the last i_size bit...
>
> Signed-off-by: Eric Sandeen <sandeen@...hat.com>

Makes sense:
Reviewed-by: Andreas Dilger <adilger@....com>

> ---
>
> diff --git a/lib/ext2fs/swapfs.c b/lib/ext2fs/swapfs.c
> index 42bc01e..38f5f9b 100644
> --- a/lib/ext2fs/swapfs.c
> +++ b/lib/ext2fs/swapfs.c
> @@ -73,9 +73,19 @@ void ext2fs_swap_super(struct ext2_super_block *  
> sb)
> 	sb->s_kbytes_written = ext2fs_swab64(sb->s_kbytes_written);
> 	for (i=0; i < 4; i++)
> 		sb->s_hash_seed[i] = ext2fs_swab32(sb->s_hash_seed[i]);
> +
> +	/* if journal backup is for a valid extent-based journal... */
> +	if (!ext2fs_extent_header_verify(sb->s_jnl_blocks,
> +					 sizeof(sb->s_jnl_blocks))) {
> +		/* ... swap only the journal i_size */
> +		sb->s_jnl_blocks[16] = ext2fs_swab32(sb->s_jnl_blocks[16]);
> +		/* and the extent data is not swapped on read */
> +		return;
> +	}
> +
> +	/* direct/indirect journal: swap it all */
> 	for (i=0; i < 17; i++)
> 		sb->s_jnl_blocks[i] = ext2fs_swab32(sb->s_jnl_blocks[i]);

I wouldn't object to fixing the formatting above to "for (i = 0; ...)"

> }
>
> void ext2fs_swap_group_desc(struct ext2_group_desc *gdp)
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux- 
> ext4" in
> the body of a message to majordomo@...r.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


Cheers, Andreas
--
Andreas Dilger
Sr. Staff Engineer, Lustre Group
Sun Microsystems of Canada, Inc.

--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ