Commit b2651583 authored by Julia Lawall's avatar Julia Lawall Committed by Ralf Baechle

MIPS: SMTC: Remove duplicate structure field initialization

The definition of the irq_ipi structure has two initializations of the
flags field.  This combines them.

[Ralf: The issue was originally introduced by commit
be4894196d79455f420dd7bb78be7dc73bec115c (linux-mips.org) rsp.
033890b0 (kernel.org).  The original
intention of the code was to initialize .flags with both flags ored together.
The broken C code as actually implemented will be compiled by an equally
broken gcc to use only the last initialization, that is IRQF_PERCPU
which means this turned into an SMTC bug for 2.6.23 and newer.]

The semantic match that finds this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@r@
identifier I, s, fld;
position p0,p;
expression E;
@@

struct I s =@p0 { ... .fld@p = E, ...};

@s@
identifier I, s, r.fld;
position r.p0,p;
expression E;
@@

struct I s =@p0 { ... .fld@p = E, ...};

@script:python@
p0 << r.p0;
fld << r.fld;
ps << s.p;
pr << r.p;
@@

if int(ps[0].line)!=int(pr[0].line) or int(ps[0].column)!=int(pr[0].column):
  cocci.print_main(fld,p0)
// </smpl>
Signed-off-by: default avatarJulia Lawall <julia@diku.dk>
Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 742db5d1
...@@ -1098,9 +1098,8 @@ static void ipi_irq_dispatch(void) ...@@ -1098,9 +1098,8 @@ static void ipi_irq_dispatch(void)
static struct irqaction irq_ipi = { static struct irqaction irq_ipi = {
.handler = ipi_interrupt, .handler = ipi_interrupt,
.flags = IRQF_DISABLED, .flags = IRQF_DISABLED | IRQF_PERCPU,
.name = "SMTC_IPI", .name = "SMTC_IPI"
.flags = IRQF_PERCPU
}; };
static void setup_cross_vpe_interrupts(unsigned int nvpe) static void setup_cross_vpe_interrupts(unsigned int nvpe)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment