lkml.org 
[lkml]   [2016]   [Nov]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [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

    \
     
     \ /
      Last update: 2016-11-28 23:51    [W:6.880 / U:0.336 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site