2009-11-24 13:43:33

by liu weni

[permalink] [raw]
Subject: [PATCH]irq/core:Add a length limitation

In the register_handler_proc(), the max length of irqaction->name is MAX_NAMELEN.
And this function will call name_unique() to compare name with other irqs'.
There is no any code for limitation the length.
I add a warning in the function to notice that the irqaction->name is too long.

Signed-off-by: Liuwenyi <[email protected]>
---
diff --git a/kernel/irq/proc.c b/kernel/irq/proc.c
index 0832145..9ab6e04 100644
--- a/kernel/irq/proc.c
+++ b/kernel/irq/proc.c
@@ -196,6 +196,9 @@ void register_handler_proc(unsigned int irq, struct irqaction *action)
char name [MAX_NAMELEN];
struct irq_desc *desc = irq_to_desc(irq);

+ if(strlen(action->name) >= MAX_NAMELEN)
+ WARN_ON(1);
+
if (!desc->dir || action->dir || !action->name ||
!name_unique(irq, action))
return;
---

Best Regards,
Liuweni
2009-11-24


2009-11-24 14:45:38

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH]irq/core:Add a length limitation


* Liuweni <[email protected]> wrote:

> In the register_handler_proc(), the max length of irqaction->name is
> MAX_NAMELEN. And this function will call name_unique() to compare name
> with other irqs'.
>
> There is no any code for limitation the length. I add a warning in the
> function to notice that the irqaction->name is too long.
>
> Signed-off-by: Liuwenyi <[email protected]>
> ---
> diff --git a/kernel/irq/proc.c b/kernel/irq/proc.c
> index 0832145..9ab6e04 100644
> --- a/kernel/irq/proc.c
> +++ b/kernel/irq/proc.c
> @@ -196,6 +196,9 @@ void register_handler_proc(unsigned int irq, struct irqaction *action)
> char name [MAX_NAMELEN];
> struct irq_desc *desc = irq_to_desc(irq);
>
> + if(strlen(action->name) >= MAX_NAMELEN)
> + WARN_ON(1);
> +

Has this situation happened in the past that requires this check to be
added? The current limit of 128 chars is quite generous. Also, the check
is buggy, it's off by 1.

( Also, please use scripts/checkpatch.pl on patches and please use
'scripts/get_maintainer.pl -f kernel/irq/proc.c' when constructing Cc:
lines. )

Thanks,

Ingo

2009-11-25 13:15:46

by liu weni

[permalink] [raw]
Subject: Re: [PATCH]irq/core:Add a length limitation

Hi Ingo,
I don't know whether this situation happened in the past.
I upload this code for code Integrity. The WARN_ON is set on OFF,
While anybody use it, and set it ON.

Thank you for you suggestion.
I modify the code and use scripts/checkpatch.pl and scripts/get_maintainer.pl
on the patch. Please have a check later.


--------------
Best Regards,
Liuweni
2009-11-25


?????ˣ? Ingo Molnar
????ʱ?䣺 2009-11-24 22:45:38
?ռ??ˣ? Liuweni; Thomas Gleixner
???ͣ? linux-kernel; xgr178; Jiri Kosina; qingshenlwy
???⣺ Re: [PATCH]irq/core:Add a length limitation

* Liuweni <[email protected]> wrote:
> In the register_handler_proc(), the max length of irqaction->name is
> MAX_NAMELEN. And this function will call name_unique() to compare name
> with other irqs'.
>
> There is no any code for limitation the length. I add a warning in the
> function to notice that the irqaction->name is too long.
>
> Signed-off-by: Liuwenyi <[email protected]>
> ---
> diff --git a/kernel/irq/proc.c b/kernel/irq/proc.c
> index 0832145..9ab6e04 100644
> --- a/kernel/irq/proc.c
> +++ b/kernel/irq/proc.c
> @@ -196,6 +196,9 @@ void register_handler_proc(unsigned int irq, struct irqaction *action)
> char name [MAX_NAMELEN];
> struct irq_desc *desc = irq_to_desc(irq);
>
> + if(strlen(action->name) >= MAX_NAMELEN)
> + WARN_ON(1);
> +
Has this situation happened in the past that requires this check to be
added? The current limit of 128 chars is quite generous. Also, the check
is buggy, it's off by 1.
( Also, please use scripts/checkpatch.pl on patches and please use
'scripts/get_maintainer.pl -f kernel/irq/proc.c' when constructing Cc:
lines. )
Thanks,
Ingo
????{.n?+???????+%?????ݶ??w??{.n?+????{??G?????{ay?ʇڙ?,j??f???h?????????z_??(?階?ݢj"???m??????G????????????&???~???iO???z??v?^?m???? ????????I?