| From 2d89e547f9e540564b35b8b3ada4f1b467a6b31e Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 3 Aug 2020 10:07:30 +0300 |
| Subject: fsl/fman: use 32-bit unsigned integer |
| |
| From: Florinel Iordache <florinel.iordache@nxp.com> |
| |
| [ Upstream commit 99f47abd9f7bf6e365820d355dc98f6955a562df ] |
| |
| Potentially overflowing expression (ts_freq << 16 and intgr << 16) |
| declared as type u32 (32-bit unsigned) is evaluated using 32-bit |
| arithmetic and then used in a context that expects an expression of |
| type u64 (64-bit unsigned) which ultimately is used as 16-bit |
| unsigned by typecasting to u16. Fixed by using an unsigned 32-bit |
| integer since the value is truncated anyway in the end. |
| |
| Fixes: 414fd46e7762 ("fsl/fman: Add FMan support") |
| Signed-off-by: Florinel Iordache <florinel.iordache@nxp.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/freescale/fman/fman.c | 3 +-- |
| 1 file changed, 1 insertion(+), 2 deletions(-) |
| |
| diff --git a/drivers/net/ethernet/freescale/fman/fman.c b/drivers/net/ethernet/freescale/fman/fman.c |
| index f151d6e111dd9..ef67e8599b393 100644 |
| --- a/drivers/net/ethernet/freescale/fman/fman.c |
| +++ b/drivers/net/ethernet/freescale/fman/fman.c |
| @@ -1398,8 +1398,7 @@ static void enable_time_stamp(struct fman *fman) |
| { |
| struct fman_fpm_regs __iomem *fpm_rg = fman->fpm_regs; |
| u16 fm_clk_freq = fman->state->fm_clk_freq; |
| - u32 tmp, intgr, ts_freq; |
| - u64 frac; |
| + u32 tmp, intgr, ts_freq, frac; |
| |
| ts_freq = (u32)(1 << fman->state->count1_micro_bit); |
| /* configure timestamp so that bit 8 will count 1 microsecond |
| -- |
| 2.25.1 |
| |