* [PATCH] hung_task: change sysctl_hung_task_check_count to int
@ 2013-09-14 2:47 Li Zefan
2013-09-14 2:53 ` Li Zefan
0 siblings, 1 reply; 4+ messages in thread
From: Li Zefan @ 2013-09-14 2:47 UTC (permalink / raw)
To: Andrew Morton; +Cc: LKML
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",
--
1.8.0.2
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] hung_task: change sysctl_hung_task_check_count to int
2013-09-14 2:47 [PATCH] hung_task: change sysctl_hung_task_check_count to int Li Zefan
@ 2013-09-14 2:53 ` Li Zefan
2013-09-14 5:53 ` Ingo Molnar
0 siblings, 1 reply; 4+ messages in thread
From: Li Zefan @ 2013-09-14 2:53 UTC (permalink / raw)
To: Andrew Morton; +Cc: LKML, Ingo Molnar
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",
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] hung_task: change sysctl_hung_task_check_count to int
2013-09-14 2:53 ` Li Zefan
@ 2013-09-14 5:53 ` Ingo Molnar
2013-09-14 6:57 ` Li Zefan
0 siblings, 1 reply; 4+ messages in thread
From: Ingo Molnar @ 2013-09-14 5:53 UTC (permalink / raw)
To: Li Zefan; +Cc: Andrew Morton, LKML
* Li Zefan <lizefan@huawei.com> wrote:
> 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,
Looks good, but I suppose most of the unsigned longs above ought to be
downgraded to int as well?
Acked-by: Ingo Molnar <mingo@kernel.org>
Thanks,
Ingo
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] hung_task: change sysctl_hung_task_check_count to int
2013-09-14 5:53 ` Ingo Molnar
@ 2013-09-14 6:57 ` Li Zefan
0 siblings, 0 replies; 4+ messages in thread
From: Li Zefan @ 2013-09-14 6:57 UTC (permalink / raw)
To: Ingo Molnar; +Cc: Andrew Morton, LKML
>> 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,
>
> Looks good, but I suppose most of the unsigned longs above ought to be
> downgraded to int as well?
>
They can be, but they don't have to be.
> Acked-by: Ingo Molnar <mingo@kernel.org>
Thanks!
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-09-14 6:57 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-09-14 2:47 [PATCH] hung_task: change sysctl_hung_task_check_count to int Li Zefan
2013-09-14 2:53 ` Li Zefan
2013-09-14 5:53 ` Ingo Molnar
2013-09-14 6:57 ` Li Zefan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox