• Julia Lawall's avatar
    MIPS: SMTC: Remove duplicate structure field initialization · b2651583
    Julia Lawall authored
    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>
    b2651583
smtc.c 36.2 KB