Messages in this thread | | | From | John Stultz <> | Date | Mon, 28 Nov 2016 14:50:59 -0800 | Subject | Re: [PATCH] timekeeping: Change type of nsec variable to unsigned in its calculation. |
| |
On Fri, Nov 18, 2016 at 8:53 PM, John Stultz <john.stultz@linaro.org> wrote: > From: Liav Rehana <liavr@mellanox.com> > > During the calculation of the nsec variable in the inline function > timekeeping_delta_to_ns, it may undergo a sign extension if its msb > is set just before the shift. The sign extension may, in some cases, > gain it a value near the maximum value of the 64-bit range. This is > bad when it is later used in a division function, such as > __iter_div_u64_rem, where the amount of loops it will go through to > calculate the division will be too large. One can encounter such a > problem, for example, when trying to connect through ftp from an > outside host to the operation system. When the OS is too overloaded, > delta will get a high enough value for the msb of the sum > delta * tkr->mult + tkr->xtime_nsec to be set, and so after the > shift the nsec variable will gain a value similar to > 0xffffffffff000000. Using a variable with such a value in the > inline function __iter_div_u64_rem will take too long, making the > ftp connection attempt seem to get stuck. > The following commit fixes that chance of sign extension, while > maintaining the type of the nsec variable as signed for other > functions that use this variable, for possible legit negative > time intervals. > > Cc: Chris Metcalf <cmetcalf@mellanox.com> > Cc: Thomas Gleixner <tglx@linutronix.de> > Cc: Richard Cochran <richardcochran@gmail.com> > Cc: Ingo Molnar <mingo@kernel.org> > Cc: Prarit Bhargava <prarit@redhat.com> > Cc: Laurent Vivier <lvivier@redhat.com> > Cc: David Gibson <david@gibson.dropbear.id.au> > Cc: "Christopher S . Hall" <christopher.s.hall@intel.com> > Cc: stable@vger.kernel.org (4.6+) > Fixes: 6bd58f09e1d8 ("time: Add cycles to nanoseconds translation") > Also-Reported-by: Chris Metcalf <cmetcalf@mellanox.com> > Signed-off-by: Liav Rehana <liavr@mellanox.com> > Signed-off-by: John Stultz <john.stultz@linaro.org> > --- > Thomas/Ingo: This is for tip:timers/urgent.
Hey Thomas, Ingo, I just wanted to follow up to make sure this wasn't missed last time. Should be applied against tip/timers/urgent.
thanks -john
| |