diff options
author | Dan Carpenter <dan.carpenter@oracle.com> | 2015-12-12 15:59:14 +0300 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2015-12-12 22:36:26 +0000 |
commit | 01c377bfe21a1050fd7cfd33699f7d8049dc2723 (patch) | |
tree | 91e690a9802f511a3c80c0a6147d391d4bab8b7c /drivers/base/regmap/regmap.c | |
parent | 8b7663de6e2bfe3c40e1846e1c4625f33d138757 (diff) |
regmap: shift wrapping bugs in 64 bit code
We should cast these to 64bit so that we don't truncate away the high
bits.
Fixes: afcc00b91f18 ('regmap: add 64-bit mode support')
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/base/regmap/regmap.c')
-rw-r--r-- | drivers/base/regmap/regmap.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c index a0d30a0fd8cf..9c167e73fdcd 100644 --- a/drivers/base/regmap/regmap.c +++ b/drivers/base/regmap/regmap.c @@ -250,20 +250,20 @@ static void regmap_format_64_be(void *buf, unsigned int val, unsigned int shift) { __be64 *b = buf; - b[0] = cpu_to_be64(val << shift); + b[0] = cpu_to_be64((u64)val << shift); } static void regmap_format_64_le(void *buf, unsigned int val, unsigned int shift) { __le64 *b = buf; - b[0] = cpu_to_le64(val << shift); + b[0] = cpu_to_le64((u64)val << shift); } static void regmap_format_64_native(void *buf, unsigned int val, unsigned int shift) { - *(u64 *)buf = val << shift; + *(u64 *)buf = (u64)val << shift; } #endif |