From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751639AbaCWUuw (ORCPT ); Sun, 23 Mar 2014 16:50:52 -0400 Received: from mail-pa0-f42.google.com ([209.85.220.42]:58295 "EHLO mail-pa0-f42.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751140AbaCWUuu (ORCPT ); Sun, 23 Mar 2014 16:50:50 -0400 Date: Mon, 24 Mar 2014 05:50:42 +0900 Message-ID: <87eh1s3ahp.wl%satoru.takeuchi@gmail.com> From: Satoru Takeuchi To: Liu Hua Cc: , , , , , , Subject: Re: [PATCH v2] hung_task : check the value of "sysctl_hung_task_timeout_sec" In-Reply-To: <1395561244-69173-1-git-send-email-sdu.liu@huawei.com> References: <1395561244-69173-1-git-send-email-sdu.liu@huawei.com> User-Agent: Wanderlust/2.15.9 (Almost Unreal) Emacs/23.4 Mule/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org At Sun, 23 Mar 2014 15:54:04 +0800, Liu Hua wrote: > > As sysctl_hung_task_timeout_sec is unsigned long, when this value is > larger then LONG_MAX/HZ, the function schedule_timeout_interruptible in > watchdog will return immediately without sleep and with print : > > [ 205.452934] schedule_timeout: wrong timeout value ffffffffffffff83 > > and then the funtion watchdog will call schedule_timeout_interruptible again > and again. The screen will be filled with > "schedule_timeout: wrong timeout value ffffffffffffff83" > > This patch does some check and correction in timeout_jiffies, to let the > function schedule_timeout_interruptible allways get the valid parameter. > > Cc: > Signed-off-by: Liu Hua > --- > kernel/hung_task.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/kernel/hung_task.c b/kernel/hung_task.c > index 6df6149..f992286 100644 > --- a/kernel/hung_task.c > +++ b/kernel/hung_task.c > @@ -174,8 +174,12 @@ static void check_hung_uninterruptible_tasks(unsigned long timeout) > > static unsigned long timeout_jiffies(unsigned long timeout) > { > - /* timeout of 0 will disable the watchdog */ > - return timeout ? timeout * HZ : MAX_SCHEDULE_TIMEOUT; > + /* timeout of 0 or >= LONG_MAX/HZ will disable the watchdog */ > + if ((timeout == 0) || (timeout > MAX_SCHEDULE_TIMEOUT)) You should check whether sysctl_hung_task_timeout_sec > MAX_SCHEDULE_TIMEOUT/HZ or not when setting this parameter instead. Then this check ins't necessary here. # Just FYI, MAX_SCHEDULE_TIMEOUT should be MAX_SCHEDULE_TIMEOUT/HZ here. Thanks, Satoru > + return MAX_SCHEDULE_TIMEOUT; > + > + return (timeout * HZ) < MAX_SCHEDULE_TIMEOUT ? > + timeout * HZ : MAX_SCHEDULE_TIMEOUT; > } > > /* > -- > 1.9.0 > > -- > To unsubscribe from this list: send the line "unsubscribe stable" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html