Re: [RFC][Update][Patch 12/16]Fix undefined ">> 32" in revoke code

"H. Peter Anvin" <[email protected]>
Newsgroups gmane.linux.file-systems,gmane.linux.kernel,gmane.comp.file-systems.ext2.devel
Message-ID <[email protected]>
Mingming Cao wrote:
> "val >> 32" is undefined if val is a 32-bit value, so this code is
> broken if CONFIG_LBD is not set.  Make it safe for that case.
> 
> Signed-off-by: Stephen Tweedie <[email protected]>
> Signed-off-by: Mingming Cao <[email protected]>
> 
> 
> ---
> 
>  linux-2.6.17-ming/fs/jbd/revoke.c |    2 +-
>  1 files changed, 1 insertion(+), 1 deletion(-)
> 
> diff -puN fs/jbd/revoke.c~jbd-revoke-32bit-shift-fix fs/jbd/revoke.c
> --- linux-2.6.17/fs/jbd/revoke.c~jbd-revoke-32bit-shift-fix	2006-06-28 16:47:09.695458913 -0700
> +++ linux-2.6.17-ming/fs/jbd/revoke.c	2006-06-28 16:47:09.699458454 -0700
> @@ -110,7 +110,7 @@ static inline int hash(journal_t *journa
>  {
>  	struct jbd_revoke_table_s *table = journal->j_revoke;
>  	int hash_shift = table->hash_shift;
> -	int hash = (int)block ^ (int)(block >> 32);
> +	int hash = (int)block ^ (int)((block >> 31) >> 1);
>  

It might be better to code it as:

	(int)((u64)block >> 32)

... which gcc can trivially recognize as 0 if block is 32 bits.  Not 
sure if it can do that with the code above.

	-hpa
-
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.