From: Lee Jones Date: Mon, 18 Aug 2014 15:11:27 +0000 (+0100) Subject: mfd: sm501: Avoid implicit sign extension X-Git-Tag: v3.18-rc1~40^2~68 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=5f114ebcee681b011e8b5bcd2b24169b85286050;p=karo-tx-linux.git mfd: sm501: Avoid implicit sign extension Suspicious implicit sign extension where 'reg' (unsigned char) is promoted in reg << clksrc to int, then sign-extended to unsigned long. If reg << clksrc is greater than 0x7FFFFFFF, the upper bits of the result will all be 1. Signed-off-by: Lee Jones --- diff --git a/drivers/mfd/sm501.c b/drivers/mfd/sm501.c index 81e6d0932bf0..1f9233bf4c3e 100644 --- a/drivers/mfd/sm501.c +++ b/drivers/mfd/sm501.c @@ -514,9 +514,9 @@ unsigned long sm501_set_clock(struct device *dev, unsigned long mode = smc501_readl(sm->regs + SM501_POWER_MODE_CONTROL); unsigned long gate = smc501_readl(sm->regs + SM501_CURRENT_GATE); unsigned long clock = smc501_readl(sm->regs + SM501_CURRENT_CLOCK); - unsigned char reg; unsigned int pll_reg = 0; unsigned long sm501_freq; /* the actual frequency achieved */ + u64 reg; struct sm501_clock to;