From: Kevin Hilman <khilman@linaro.org>
To: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
linux-kernel@vger.kernel.org, linaro-kernel@lists.linaro.org,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@kernel.org>
Subject: Re: [PATCH 2/2] sched/nohz: fix overflow error in scheduler_tick_max_deferment()
Date: Mon, 06 Jan 2014 10:27:32 -0800 [thread overview]
Message-ID: <87ob3pezjf.fsf@linaro.org> (raw)
In-Reply-To: <20140105130612.GB17617@localhost.localdomain> (Frederic Weisbecker's message of "Sun, 5 Jan 2014 14:06:16 +0100")
Frederic Weisbecker <fweisbec@gmail.com> writes:
> On Tue, Dec 17, 2013 at 01:23:08PM -0800, Kevin Hilman wrote:
>> The conversion of the max deferment from usecs to nsecs can easily
>> overflow on platforms where a long is 32-bits. To fix, cast the usecs
>> value to u64 before multiplying by NSECS_PER_USEC.
>>
>> This was discovered on 32-bit ARM platform when extending the max
>> deferment value.
>>
>> Cc: Frederic Weisbecker <fweisbec@gmail.com>
>> Signed-off-by: Kevin Hilman <khilman@linaro.org>
>> ---
>> kernel/sched/core.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/kernel/sched/core.c b/kernel/sched/core.c
>> index 4b1fe3e69fe4..3d7c80e1c4d9 100644
>> --- a/kernel/sched/core.c
>> +++ b/kernel/sched/core.c
>> @@ -2203,7 +2203,7 @@ u64 scheduler_tick_max_deferment(void)
>> if (time_before_eq(next, now))
>> return 0;
>>
>> - return jiffies_to_usecs(next - now) * NSEC_PER_USEC;
>> + return (u64)jiffies_to_usecs(next - now) * NSEC_PER_USEC;
>
> Just to be sure I understand the issue. The problem is that jiffies_to_usecs()
> return an unsigned int which is then multiplied by NSEC_PER_USEC. If the result
> of the mul is too big to be stored in an unsigned int, we overflow and may loose
> some high part of the result. Right?
Correct.
Kevin
next prev parent reply other threads:[~2014-01-06 18:27 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-17 21:23 [PATCH 1/2] sched/nohz: add debugfs control over sched_tick_max_deferment Kevin Hilman
2013-12-17 21:23 ` [PATCH 2/2] sched/nohz: fix overflow error in scheduler_tick_max_deferment() Kevin Hilman
2014-01-05 13:06 ` Frederic Weisbecker
2014-01-06 18:27 ` Kevin Hilman [this message]
2014-01-25 14:22 ` [tip:timers/urgent] sched/nohz: Fix " tip-bot for Kevin Hilman
2014-01-05 13:21 ` [PATCH 1/2] sched/nohz: add debugfs control over sched_tick_max_deferment Frederic Weisbecker
2014-01-06 18:37 ` Kevin Hilman
2014-01-10 15:17 ` Frederic Weisbecker
2014-01-14 20:46 ` Kevin Hilman
-- strict thread matches above, loose matches on Subject: below --
2013-09-16 22:43 Kevin Hilman
2013-09-16 22:43 ` [PATCH 2/2] sched/nohz: fix overflow error in scheduler_tick_max_deferment() Kevin Hilman
2013-09-16 22:43 ` Kevin Hilman
2013-06-18 23:58 [PATCH 1/2] sched/nohz: add sysctl control over sched_tick_max_deferment Kevin Hilman
2013-06-18 23:58 ` [PATCH 2/2] sched/nohz: fix overflow error in scheduler_tick_max_deferment() Kevin Hilman
2013-06-19 19:06 ` Frederic Weisbecker
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=87ob3pezjf.fsf@linaro.org \
--to=khilman@linaro.org \
--cc=fweisbec@gmail.com \
--cc=linaro-kernel@lists.linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.