From: b.brezillon@overkiz.com (boris brezillon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] at91: pmc: Fixed irq's name allocation for programmable clocks
Date: Mon, 03 Feb 2014 18:13:21 +0100 [thread overview]
Message-ID: <52EFCE31.7010900@overkiz.com> (raw)
In-Reply-To: <1391445961-20755-1-git-send-email-jjhiblot@traphandler.com>
Hello JJ,
On 03/02/2014 17:46, Jean-Jacques Hiblot wrote:
> The name provided to request_irq() must be valid until the irq is
> released.
> This patch allocates and formats the string with kasprintf().
Thanks for reporting this bug.
>
> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
> ---
> drivers/clk/at91/clk-programmable.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/clk/at91/clk-programmable.c b/drivers/clk/at91/clk-programmable.c
> index 8e242c7..0f8bf0f 100644
> --- a/drivers/clk/at91/clk-programmable.c
> +++ b/drivers/clk/at91/clk-programmable.c
> @@ -19,6 +19,7 @@
> #include <linux/sched.h>
> #include <linux/interrupt.h>
> #include <linux/irq.h>
> +#include <linux/string.h>
>
> #include "pmc.h"
>
> @@ -247,7 +248,7 @@ at91_clk_register_programmable(struct at91_pmc *pmc, unsigned int irq,
> struct clk_programmable *prog;
> struct clk *clk = NULL;
> struct clk_init_data init;
> - char irq_name[11];
> + char *irq_name;
>
> if (id > PROG_ID_MAX)
> return ERR_PTR(-EINVAL);
> @@ -269,7 +270,7 @@ at91_clk_register_programmable(struct at91_pmc *pmc, unsigned int irq,
> prog->irq = irq;
> init_waitqueue_head(&prog->wait);
> irq_set_status_flags(prog->irq, IRQ_NOAUTOEN);
> - snprintf(irq_name, sizeof(irq_name), "clk-prog%d", id);
> + irq_name = kasprintf(GFP_KERNEL, "clk-prog%d", id);
Could you either use a static table with the prog clk names or store the
name in
the clk_programmable struct ?
This way we could avoid the additional dynamic allocation.
static prog_clk_names = {
"clk-prog0",
[...]
"clk-prog7",
};
[...]
ret = request_irq(prog->irq, clk_programmable_irq_handler,
IRQF_TRIGGER_HIGH, prog_clk_names[id], prog);
or
struct clk_programmable {
[...]
char irq_name[11];
[...]
};
[...]
snprintf(prog->irq_name, sizeof(prog->irq_name), "clk-prog%d", id);
ret = request_irq(prog->irq, clk_programmable_irq_handler,
IRQF_TRIGGER_HIGH, prog->irq_name, prog);
Best Regards,
Boris
> ret = request_irq(prog->irq, clk_programmable_irq_handler,
> IRQF_TRIGGER_HIGH, irq_name, prog);
> if (ret)
WARNING: multiple messages have this Message-ID (diff)
From: boris brezillon <b.brezillon@overkiz.com>
To: Jean-Jacques Hiblot <jjhiblot@traphandler.com>, nicolas.ferre@atmel.com
Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH] at91: pmc: Fixed irq's name allocation for programmable clocks
Date: Mon, 03 Feb 2014 18:13:21 +0100 [thread overview]
Message-ID: <52EFCE31.7010900@overkiz.com> (raw)
In-Reply-To: <1391445961-20755-1-git-send-email-jjhiblot@traphandler.com>
Hello JJ,
On 03/02/2014 17:46, Jean-Jacques Hiblot wrote:
> The name provided to request_irq() must be valid until the irq is
> released.
> This patch allocates and formats the string with kasprintf().
Thanks for reporting this bug.
>
> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
> ---
> drivers/clk/at91/clk-programmable.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/clk/at91/clk-programmable.c b/drivers/clk/at91/clk-programmable.c
> index 8e242c7..0f8bf0f 100644
> --- a/drivers/clk/at91/clk-programmable.c
> +++ b/drivers/clk/at91/clk-programmable.c
> @@ -19,6 +19,7 @@
> #include <linux/sched.h>
> #include <linux/interrupt.h>
> #include <linux/irq.h>
> +#include <linux/string.h>
>
> #include "pmc.h"
>
> @@ -247,7 +248,7 @@ at91_clk_register_programmable(struct at91_pmc *pmc, unsigned int irq,
> struct clk_programmable *prog;
> struct clk *clk = NULL;
> struct clk_init_data init;
> - char irq_name[11];
> + char *irq_name;
>
> if (id > PROG_ID_MAX)
> return ERR_PTR(-EINVAL);
> @@ -269,7 +270,7 @@ at91_clk_register_programmable(struct at91_pmc *pmc, unsigned int irq,
> prog->irq = irq;
> init_waitqueue_head(&prog->wait);
> irq_set_status_flags(prog->irq, IRQ_NOAUTOEN);
> - snprintf(irq_name, sizeof(irq_name), "clk-prog%d", id);
> + irq_name = kasprintf(GFP_KERNEL, "clk-prog%d", id);
Could you either use a static table with the prog clk names or store the
name in
the clk_programmable struct ?
This way we could avoid the additional dynamic allocation.
static prog_clk_names = {
"clk-prog0",
[...]
"clk-prog7",
};
[...]
ret = request_irq(prog->irq, clk_programmable_irq_handler,
IRQF_TRIGGER_HIGH, prog_clk_names[id], prog);
or
struct clk_programmable {
[...]
char irq_name[11];
[...]
};
[...]
snprintf(prog->irq_name, sizeof(prog->irq_name), "clk-prog%d", id);
ret = request_irq(prog->irq, clk_programmable_irq_handler,
IRQF_TRIGGER_HIGH, prog->irq_name, prog);
Best Regards,
Boris
> ret = request_irq(prog->irq, clk_programmable_irq_handler,
> IRQF_TRIGGER_HIGH, irq_name, prog);
> if (ret)
next prev parent reply other threads:[~2014-02-03 17:13 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-03 16:46 [PATCH] at91: pmc: Fixed irq's name allocation for programmable clocks Jean-Jacques Hiblot
2014-02-03 16:46 ` Jean-Jacques Hiblot
2014-02-03 17:13 ` boris brezillon [this message]
2014-02-03 17:13 ` boris brezillon
2014-02-04 8:21 ` [PATCH v2] " Jean-Jacques Hiblot
2014-02-04 8:21 ` Jean-Jacques Hiblot
2014-02-04 8:29 ` Boris BREZILLON
2014-02-04 8:29 ` Boris BREZILLON
2014-02-04 8:42 ` Boris BREZILLON
2014-02-04 8:42 ` Boris BREZILLON
2014-02-04 13:57 ` Boris BREZILLON
2014-02-04 13:57 ` Boris BREZILLON
2014-02-04 9:03 ` Nicolas Ferre
2014-02-04 9:03 ` Nicolas Ferre
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=52EFCE31.7010900@overkiz.com \
--to=b.brezillon@overkiz.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.