summaryrefslogtreecommitdiff
path: root/drivers/base/regmap/regmap.c
diff options
context:
space:
mode:
authorDan Carpenter <dan.carpenter@oracle.com>2015-12-12 15:59:14 +0300
committerMark Brown <broonie@kernel.org>2015-12-12 22:36:26 +0000
commit01c377bfe21a1050fd7cfd33699f7d8049dc2723 (patch)
tree91e690a9802f511a3c80c0a6147d391d4bab8b7c /drivers/base/regmap/regmap.c
parent8b7663de6e2bfe3c40e1846e1c4625f33d138757 (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.c6
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