Re: [PATCH] hung_task: change sysctl_hung_task_check_count to int

Li Zefan
2013-09-14T02:54:02Z

Cc: Ingo, as this touched include/linux/sched/.

On 2013/9/14 10:47, Li Zefan wrote:
> As sysctl_hung_task_check_count is unsigned long, when this value is
> assigned to max_count in check_hung_uninterruptible_tasks(), it's
> truncated to int type.
>
> Therefore if we write 2^32 to sysctl.hung_task_check_count, hung task
> detection will be effectively disabled.
>
> Not a big deal, but still it's better to fix this inconsistency.
>
> Signed-off-by: Li Zefan <lizefan@huawei.com>
> ---
> include/linux/sched/sysctl.h | 2 +-
> kernel/hung_task.c | 2 +-
> kernel/sysctl.c | 4 ++--
> 3 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/include/linux/sched/sysctl.h b/include/linux/sched/sysctl.h
> index bf8086b..9552afa 100644
> --- a/include/linux/sched/sysctl.h
> +++ b/include/linux/sched/sysctl.h
> @@ -2,8 +2,8 @@
> #define _SCHED_SYSCTL_H
>
> #ifdef CONFIG_DETECT_HUNG_TASK
> +extern int sysctl_hung_task_check_count;
> extern unsigned int sysctl_hung_task_panic;
> -extern unsigned long sysctl_hung_task_check_count;
> extern unsigned long sysctl_hung_task_timeout_secs;
> extern unsigned long sysctl_hung_task_warnings;
> extern int proc_dohung_task_timeout_secs(struct ctl_table *table, int write,
> diff --git a/kernel/hung_task.c b/kernel/hung_task.c
> index 6df6149..b5a5d42 100644
> --- a/kernel/hung_task.c
> +++ b/kernel/hung_task.c
> @@ -19,7 +19,7 @@
> /*
> * The number of tasks checked:
> */
> -unsigned long __read_mostly sysctl_hung_task_check_count = PID_MAX_LIMIT;
> +int __read_mostly sysctl_hung_task_check_count = PID_MAX_LIMIT;
>
> /*
> * Limit number of tasks checked in a batch.
> diff --git a/kernel/sysctl.c b/kernel/sysctl.c
> index 07f6fc4..5e5cc21 100644
> --- a/kernel/sysctl.c
> +++ b/kernel/sysctl.c
> @@ -962,9 +962,9 @@ static struct ctl_table kern_table[] = {
> {
> .procname = "hung_task_check_count",
> .data = &sysctl_hung_task_check_count,
> - .maxlen = sizeof(unsigned long),
> + .maxlen = sizeof(int),
> .mode = 0644,
> - .proc_handler = proc_doulongvec_minmax,
> + .proc_handler = proc_dointvec_minmax,
> },
> {
> .procname = "hung_task_timeout_secs",
>