All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH] jfs: avoid undefined behavior from left-shifting by 32 bits
       [not found] <1357413561-42508-1-git-send-email-nickolai@csail.mit.edu>
@ 2013-01-07 14:33 ` Dave Kleikamp
  0 siblings, 0 replies; only message in thread
From: Dave Kleikamp @ 2013-01-07 14:33 UTC (permalink / raw)
  To: Nickolai Zeldovich; +Cc: linux-kernel, jfs-discussion

On 01/05/2013 01:19 PM, Nickolai Zeldovich wrote:
> Shifting a 32-bit int by 32 bits is undefined behavior in C, and
> results in different behavior on different architectures (e.g., x86
> and PowerPC).  diAlloc() in fs/jfs/jfs_imap.c computes a mask using
> 0xffffffffu<<(32-bitno), which can left-shift by 32 bits.  To avoid
> unexpected behavior, explicitly check for bitno==0 and use a 0 mask.

Thanks. Pushed to
git://github.com/kleikamp/linux-shaggy.git jfs-next

Shaggy

> 
> Signed-off-by: Nickolai Zeldovich <nickolai@csail.mit.edu>
> ---
>  fs/jfs/jfs_imap.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/fs/jfs/jfs_imap.c b/fs/jfs/jfs_imap.c
> index 6ba4006..f7e042b 100644
> --- a/fs/jfs/jfs_imap.c
> +++ b/fs/jfs/jfs_imap.c
> @@ -1493,7 +1493,7 @@ int diAlloc(struct inode *pip, bool dir, struct inode *ip)
>  		/* mask any prior bits for the starting words of the
>  		 * summary map.
>  		 */
> -		mask = ONES << (EXTSPERSUM - bitno);
> +		mask = (bitno == 0) ? 0 : (ONES << (EXTSPERSUM - bitno));
>  		inosmap = le32_to_cpu(iagp->inosmap[sword]) | mask;
>  		extsmap = le32_to_cpu(iagp->extsmap[sword]) | mask;
>  
> 

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2013-01-07 14:33 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <1357413561-42508-1-git-send-email-nickolai@csail.mit.edu>
2013-01-07 14:33 ` [PATCH] jfs: avoid undefined behavior from left-shifting by 32 bits Dave Kleikamp

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.