3.16.50-rc1 review patch.  If anyone has any objections, please let me know.

------------------

From: Jeff Kirsher <jeffrey.t.kirs...@intel.com>

commit 30544af5483755b11bb5924736e9e0b45ef0644a upstream.

We were using s64 for lat_ns (latency nano-second value) since in
our calculations a negative value could be a resultant.  For negative
values, we then assign lat_ns to be zero, so the value passed to
do_div() was never negative, but do_div() expects the argument type
to be u64, so do a cast to resolve a compile warning seen on
PowerPC.

CC: Yanjiang Jin <yanjiang....@windriver.com>
CC: Yanir Lubetkin <yanirx.lubet...@intel.com>
Reported-by: Yanjiang Jin <yanjiang....@windriver.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirs...@intel.com>
Tested-by: Aaron Brown <aaron.f.br...@intel.com>
Signed-off-by: Arnd Bergmann <a...@arndb.de>
Signed-off-by: Ben Hutchings <b...@decadent.org.uk>
---
 drivers/net/ethernet/intel/e1000e/ich8lan.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

--- a/drivers/net/ethernet/intel/e1000e/ich8lan.c
+++ b/drivers/net/ethernet/intel/e1000e/ich8lan.c
@@ -984,7 +984,7 @@ static s32 e1000_platform_pm_pch_lpt(str
                u16 max_snoop, max_nosnoop;
                u16 max_ltr_enc;        /* max LTR latency encoded */
                s64 lat_ns;     /* latency (ns) */
-               s64 value;
+               u64 value;
                u32 rxa;
 
                if (!hw->adapter->max_frame_size) {
@@ -1011,12 +1011,13 @@ static s32 e1000_platform_pm_pch_lpt(str
                 */
                lat_ns = ((s64)rxa * 1024 -
                          (2 * (s64)hw->adapter->max_frame_size)) * 8 * 1000;
-               if (lat_ns < 0)
-                       lat_ns = 0;
-               else
-                       do_div(lat_ns, speed);
+               if (lat_ns < 0) {
+                       value = 0;
+               } else {
+                       value = lat_ns;
+                       do_div(value, speed);
+               }
 
-               value = lat_ns;
                while (value > PCI_LTR_VALUE_MASK) {
                        scale++;
                        value = DIV_ROUND_UP(value, (1 << 5));

Reply via email to