atm: he: use 64-bit arithmetic instead of 32-bit
authorGustavo A. R. Silva <gustavo@embeddedor.com>
Wed, 7 Feb 2018 16:17:29 +0000 (10:17 -0600)
committerDavid S. Miller <davem@davemloft.net>
Thu, 8 Feb 2018 20:05:16 +0000 (15:05 -0500)
Add suffix ULL to constants 272, 204, 136 and 68 in order to give the
compiler complete information about the proper arithmetic to use.
Notice that these constants are used in contexts that expect
expressions of type unsigned long long (64 bits, unsigned).

The following expressions are currently being evaluated using 32-bit
arithmetic:

272 * mult
204 * mult
136 * mult
68 * mult

Addresses-Coverity-ID: 201058
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/atm/he.c

index e58538c29377710ed6f0a1b83883c1b8db91e41b..29f102dcfec499885fd9feed86fb54c7b3617059 100644 (file)
@@ -738,13 +738,13 @@ static int he_init_cs_block_rcm(struct he_dev *he_dev)
 #else
                /* this is pretty, but avoids _divdu3 and is mostly correct */
                mult = he_dev->atm_dev->link_rate / ATM_OC3_PCR;
-               if (rate_cps > (272 * mult))
+               if (rate_cps > (272ULL * mult))
                        buf = 4;
-               else if (rate_cps > (204 * mult))
+               else if (rate_cps > (204ULL * mult))
                        buf = 3;
-               else if (rate_cps > (136 * mult))
+               else if (rate_cps > (136ULL * mult))
                        buf = 2;
-               else if (rate_cps > (68 * mult))
+               else if (rate_cps > (68ULL * mult))
                        buf = 1;
                else
                        buf = 0;