From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.4 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AE3FBC433E0 for ; Mon, 1 Feb 2021 13:48:26 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4E2D464D9D for ; Mon, 1 Feb 2021 13:48:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231594AbhBANsJ (ORCPT ); Mon, 1 Feb 2021 08:48:09 -0500 Received: from mail.kernel.org ([198.145.29.99]:47906 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229707AbhBANsG (ORCPT ); Mon, 1 Feb 2021 08:48:06 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id 3889564D99; Mon, 1 Feb 2021 13:47:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1612187245; bh=OblNRRU9kt2opjlL2A1b+cyHiv7FjD00GN257vO0Hyw=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=kX4MnFOwjVBTO0dX5qcuLJTS2yo8RCXKR6PQ1fuvA77uLu740cUMxT7zzZ+oiUWS5 NZB5sJFOEaW23R7+j0cP/Nn1UZH27I/DOn6DT5xU3sl57uNb1y4yQVCyGqZyHGQFBD gbP651gjDexnAhZANFmg56DKTcoJkfFZdT4eGrqQL96Cv0yUVepoS7PeTHzsXrhRJr ptt0Oigp5jmK8lhy94ylbqEpb0Q72fp8yHOuz1PkWuwHfp9c9OI8Yv1vu0OYQf91F5 lqZ784U7BwnTakLFWmy/tgLPMMlzQp4wp4tC05RpuvbIW+DoKDp3cHgPOKf8YpCsRT Xto/3opHaKO4Q== Date: Mon, 1 Feb 2021 14:47:23 +0100 From: Frederic Weisbecker To: "Zhou Ti (x2019cwm)" Cc: "fweisbec@gmail.com" , "tglx@linutronix.de" , "mingo@kernel.org" , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH] fix the issue that the tick_nohz_get_sleep_length() function could return a negative value Message-ID: <20210201134723.GB41955@lothringen> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jan 20, 2021 at 11:49:38PM +0000, Zhou Ti (x2019cwm) wrote: > Fix the issue that the tick_nohz_get_sleep_length() function could return a > negative value. > > The variable "dev->next_event" has a small possibility to be smaller than > the variable "now" during running, which would result in a negative value > of "*delta_next". The variable "next_event" also has a small posibility to > be smaller than the variable "now". Both case could lead to a negative > return of function tick_nohz_get_sleep_length(). Makes sense, queued, thanks! > > Signed-off-by: Ti Zhou > --- > --- tip/kernel/time/tick-sched.c.orig 2021-01-20 05:34:25.151325912 -0400 > +++ tip/kernel/time/tick-sched.c 2021-01-20 19:44:28.238538380 -0400 > @@ -1142,6 +1142,9 @@ ktime_t tick_nohz_get_sleep_length(ktime > > *delta_next = ktime_sub(dev->next_event, now); > > + if (unlikely(*delta_next < 0)) > + *delta_next = 0; > + > if (!can_stop_idle_tick(cpu, ts)) > return *delta_next; > > @@ -1156,6 +1159,9 @@ ktime_t tick_nohz_get_sleep_length(ktime > next_event = min_t(u64, next_event, > hrtimer_next_event_without(&ts->sched_timer)); > > + if (unlikely(next_event < now)) > + next_event = now; > + > return ktime_sub(next_event, now); > } >