From: Thomas Gleixner <tglx@linutronix.de>
To: John Stultz <john.stultz@linaro.org>
Cc: lkml <linux-kernel@vger.kernel.org>,
Liav Rehana <liavr@mellanox.com>,
Chris Metcalf <cmetcalf@mellanox.com>,
Richard Cochran <richardcochran@gmail.com>,
Ingo Molnar <mingo@kernel.org>,
Prarit Bhargava <prarit@redhat.com>,
Laurent Vivier <lvivier@redhat.com>,
David Gibson <david@gibson.dropbear.id.au>,
"Christopher S . Hall" <christopher.s.hall@intel.com>,
"4.6+" <stable@vger.kernel.org>
Subject: Re: [PATCH] timekeeping: Change type of nsec variable to unsigned in its calculation.
Date: Tue, 29 Nov 2016 15:22:17 +0100 (CET) [thread overview]
Message-ID: <alpine.DEB.2.20.1611291520070.4358@nanos> (raw)
In-Reply-To: <1479531216-25361-1-git-send-email-john.stultz@linaro.org>
On Fri, 18 Nov 2016, John Stultz 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.
>
> Thomas/Ingo: This is for tip:timers/urgent.
Certainly not! My objections against this still stand. See:
http://lkml.kernel.org/r/alpine.DEB.2.20.1609261956160.4915@nanos
http://lkml.kernel.org/r/alpine.DEB.2.20.1609270929170.4891@nanos
If we have legitimate use cases with a negative delta, then this patch
breaks them no matter what. See the basic C course section in the second
link.
Thanks,
tglx
next prev parent reply other threads:[~2016-11-29 14:22 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-19 4:53 [PATCH] timekeeping: Change type of nsec variable to unsigned in its calculation John Stultz
2016-11-28 22:50 ` John Stultz
2016-11-29 14:22 ` Thomas Gleixner [this message]
2016-11-29 23:57 ` David Gibson
2016-11-30 23:21 ` Thomas Gleixner
2016-12-01 2:12 ` David Gibson
2016-12-01 11:59 ` Thomas Gleixner
2016-12-01 20:23 ` John Stultz
2016-12-01 20:46 ` Thomas Gleixner
2016-12-01 21:19 ` John Stultz
2016-12-01 22:44 ` Thomas Gleixner
2016-12-01 23:03 ` John Stultz
2016-12-01 23:08 ` Thomas Gleixner
2016-12-01 23:32 ` David Gibson
2016-12-02 8:36 ` Thomas Gleixner
2016-12-03 0:33 ` David Gibson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.DEB.2.20.1611291520070.4358@nanos \
--to=tglx@linutronix.de \
--cc=christopher.s.hall@intel.com \
--cc=cmetcalf@mellanox.com \
--cc=david@gibson.dropbear.id.au \
--cc=john.stultz@linaro.org \
--cc=liavr@mellanox.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lvivier@redhat.com \
--cc=mingo@kernel.org \
--cc=prarit@redhat.com \
--cc=richardcochran@gmail.com \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox