diff --git a/fs/nfs/internal.h b/fs/nfs/internal.h
index dc0693b3d2144fca01af0893e1058a6885f1e825..9f0f4534744ba4d10050d13559a115b7ccd617cc 100644
--- a/fs/nfs/internal.h
+++ b/fs/nfs/internal.h
@@ -717,9 +717,9 @@ unsigned long nfs_block_bits(unsigned long bsize, unsigned char *nrbitsp)
 	if ((bsize & (bsize - 1)) || nrbitsp) {
 		unsigned char	nrbits;
 
-		for (nrbits = 31; nrbits && !(bsize & (1 << nrbits)); nrbits--)
+		for (nrbits = 31; nrbits && !(bsize & (1UL << nrbits)); nrbits--)
 			;
-		bsize = 1 << nrbits;
+		bsize = 1UL << nrbits;
 		if (nrbitsp)
 			*nrbitsp = nrbits;
 	}