2010-11-30 08:36:56

by Kenji Kaneshige

[permalink] [raw]
Subject: [PATCH] genirq: fix incorrect proc spurious output

Fix the problem that all the /proc/irq/XX/spurious files shows the IRQ
0 information.

Current irq_spurious_proc_open() passes on NULL as the 3rd argument,
which is used as an IRQ number in irq_spurious_proc_show(), to the
single_open(). Because of this, all the /proc/irq/XX/spurious file
shows IRQ 0 information regardless of the IRQ number.

To fix the problem, irq_spurious_proc_open() must pass on the
appropreate data (IRQ number) to single_open().

Signed-off-by: Kenji Kaneshige <[email protected]>

---
kernel/irq/proc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Index: linux-next-20101125/kernel/irq/proc.c
===================================================================
--- linux-next-20101125.orig/kernel/irq/proc.c
+++ linux-next-20101125/kernel/irq/proc.c
@@ -214,7 +214,7 @@ static int irq_spurious_proc_show(struct

static int irq_spurious_proc_open(struct inode *inode, struct file *file)
{
- return single_open(file, irq_spurious_proc_show, NULL);
+ return single_open(file, irq_spurious_proc_show, PDE(inode)->data);
}

static const struct file_operations irq_spurious_proc_fops = {


2010-11-30 09:08:18

by Yong Zhang

[permalink] [raw]
Subject: Re: [PATCH] genirq: fix incorrect proc spurious output

2010/11/30 Kenji Kaneshige <[email protected]>:
> Fix the problem that all the /proc/irq/XX/spurious files shows the IRQ
> 0 information.
>
> Current irq_spurious_proc_open() passes on NULL as the 3rd argument,
> which is used as an IRQ number in irq_spurious_proc_show(), to the
> single_open(). Because of this, all the /proc/irq/XX/spurious file
> shows IRQ 0 information regardless of the IRQ number.
>
> To fix the problem, irq_spurious_proc_open() must pass on the
> appropreate data (IRQ number) to single_open().
>
> Signed-off-by: Kenji Kaneshige <[email protected]>

Looks good.

Reviewed-by: Yong Zhang <[email protected]>

BTW, it's introduced by a1afb6371bb5341057056194d1168753f6d77242
So should we Cc'ing stable?

>
> ---
>  kernel/irq/proc.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> Index: linux-next-20101125/kernel/irq/proc.c
> ===================================================================
> --- linux-next-20101125.orig/kernel/irq/proc.c
> +++ linux-next-20101125/kernel/irq/proc.c
> @@ -214,7 +214,7 @@ static int irq_spurious_proc_show(struct
>
>  static int irq_spurious_proc_open(struct inode *inode, struct file *file)
>  {
> -       return single_open(file, irq_spurious_proc_show, NULL);
> +       return single_open(file, irq_spurious_proc_show, PDE(inode)->data);
>  }
>
>  static const struct file_operations irq_spurious_proc_fops = {
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
>

2010-11-30 10:07:49

by Alexey Dobriyan

[permalink] [raw]
Subject: Re: [PATCH] genirq: fix incorrect proc spurious output

On Tue, Nov 30, 2010 at 05:08:13PM +0800, Yong Zhang wrote:
> 2010/11/30 Kenji Kaneshige <[email protected]>:
> > Fix the problem that all the /proc/irq/XX/spurious files shows the IRQ
> > 0 information.
> >
> > Current irq_spurious_proc_open() passes on NULL as the 3rd argument,
> > which is used as an IRQ number in irq_spurious_proc_show(), to the
> > single_open(). Because of this, all the /proc/irq/XX/spurious file
> > shows IRQ 0 information regardless of the IRQ number.
> >
> > To fix the problem, irq_spurious_proc_open() must pass on the
> > appropreate data (IRQ number) to single_open().
> >
> > Signed-off-by: Kenji Kaneshige <[email protected]>
>
> Looks good.
>
> Reviewed-by: Yong Zhang <[email protected]>
>
> BTW, it's introduced by a1afb6371bb5341057056194d1168753f6d77242
> So should we Cc'ing stable?

Definitely.

> > ?static int irq_spurious_proc_open(struct inode *inode, struct file *file)
> > ?{
> > - ? ? ? return single_open(file, irq_spurious_proc_show, NULL);
> > + ? ? ? return single_open(file, irq_spurious_proc_show, PDE(inode)->data);
> > ?}

2010-12-01 05:26:42

by Kenji Kaneshige

[permalink] [raw]
Subject: Re: [PATCH] genirq: fix incorrect proc spurious output

Thank you for reviewing, Yong, Alexey.
I'll resend the patch with cc:ing stable.

Regards,
Kenji Kaneshige


(2010/11/30 19:07), Alexey Dobriyan wrote:
> On Tue, Nov 30, 2010 at 05:08:13PM +0800, Yong Zhang wrote:
>> 2010/11/30 Kenji Kaneshige<[email protected]>:
>>> Fix the problem that all the /proc/irq/XX/spurious files shows the IRQ
>>> 0 information.
>>>
>>> Current irq_spurious_proc_open() passes on NULL as the 3rd argument,
>>> which is used as an IRQ number in irq_spurious_proc_show(), to the
>>> single_open(). Because of this, all the /proc/irq/XX/spurious file
>>> shows IRQ 0 information regardless of the IRQ number.
>>>
>>> To fix the problem, irq_spurious_proc_open() must pass on the
>>> appropreate data (IRQ number) to single_open().
>>>
>>> Signed-off-by: Kenji Kaneshige<[email protected]>
>>
>> Looks good.
>>
>> Reviewed-by: Yong Zhang<[email protected]>
>>
>> BTW, it's introduced by a1afb6371bb5341057056194d1168753f6d77242
>> So should we Cc'ing stable?
>
> Definitely.
>
>>> static int irq_spurious_proc_open(struct inode *inode, struct file *file)
>>> {
>>> - return single_open(file, irq_spurious_proc_show, NULL);
>>> + return single_open(file, irq_spurious_proc_show, PDE(inode)->data);
>>> }
>
>

2010-12-01 07:46:11

by Kenji Kaneshige

[permalink] [raw]
Subject: [tip:irq/urgent] genirq: Fix incorrect proc spurious output

Commit-ID: 25c9170ed64a6551beefe9315882f754e14486f4
Gitweb: http://git.kernel.org/tip/25c9170ed64a6551beefe9315882f754e14486f4
Author: Kenji Kaneshige <[email protected]>
AuthorDate: Tue, 30 Nov 2010 17:36:08 +0900
Committer: Thomas Gleixner <[email protected]>
CommitDate: Wed, 1 Dec 2010 08:44:26 +0100

genirq: Fix incorrect proc spurious output

Since commit a1afb637(switch /proc/irq/*/spurious to seq_file) all
/proc/irq/XX/spurious files show the information of irq 0.

Current irq_spurious_proc_open() passes on NULL as the 3rd argument,
which is used as an IRQ number in irq_spurious_proc_show(), to the
single_open(). Because of this, all the /proc/irq/XX/spurious file
shows IRQ 0 information regardless of the IRQ number.

To fix the problem, irq_spurious_proc_open() must pass on the
appropreate data (IRQ number) to single_open().

Signed-off-by: Kenji Kaneshige <[email protected]>
Reviewed-by: Yong Zhang <[email protected]>
LKML-Reference: <[email protected]>
Cc: [email protected] [2.6.33+]
Signed-off-by: Thomas Gleixner <[email protected]>

---
kernel/irq/proc.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/kernel/irq/proc.c b/kernel/irq/proc.c
index 01b1d3a..6c8a2a9 100644
--- a/kernel/irq/proc.c
+++ b/kernel/irq/proc.c
@@ -214,7 +214,7 @@ static int irq_spurious_proc_show(struct seq_file *m, void *v)

static int irq_spurious_proc_open(struct inode *inode, struct file *file)
{
- return single_open(file, irq_spurious_proc_show, NULL);
+ return single_open(file, irq_spurious_proc_show, PDE(inode)->data);
}

static const struct file_operations irq_spurious_proc_fops = {