lkml.org 
[lkml]   [2012]   [Jul]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] scripts/coccinelle: Find threaded IRQs requests which are missing IRQF_ONESHOT
    Date
    Since commit 1c6c69525b ("genirq: Reject bogus threaded irq requests") threaded
    IRQs without a primary handler need to be requested with IRQF_ONESHOT, otherwise
    the request will fail. This semantic patch will help to statically identify
    (and fix) such cases.

    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    ---
    scripts/coccinelle/misc/irqf_oneshot.cocci | 65 ++++++++++++++++++++++++++++
    1 file changed, 65 insertions(+)
    create mode 100644 scripts/coccinelle/misc/irqf_oneshot.cocci

    diff --git a/scripts/coccinelle/misc/irqf_oneshot.cocci b/scripts/coccinelle/misc/irqf_oneshot.cocci
    new file mode 100644
    index 0000000..6cfde94
    --- /dev/null
    +++ b/scripts/coccinelle/misc/irqf_oneshot.cocci
    @@ -0,0 +1,65 @@
    +/// Make sure threaded IRQs without a primary handler are always request with
    +/// IRQF_ONESHOT
    +///
    +//
    +// Confidence: Good
    +// Comments:
    +// Options: --no-includes
    +
    +virtual patch
    +virtual context
    +virtual org
    +virtual report
    +
    +@r1@
    +expression irq;
    +expression thread_fn;
    +expression flags;
    +position p;
    +@@
    +request_threaded_irq@p(irq, NULL, thread_fn,
    +(
    +flags | IRQF_ONESHOT
    +|
    +IRQF_ONESHOT
    +)
    +, ...)
    +
    +@depends on patch@
    +expression irq;
    +expression thread_fn;
    +expression flags;
    +position p != r1.p;
    +@@
    +request_threaded_irq@p(irq, NULL, thread_fn,
    +(
    +-0
    ++IRQF_ONESHOT
    +|
    +-flags
    ++flags | IRQF_ONESHOT
    +)
    +, ...)
    +
    +@depends on context@
    +position p != r1.p;
    +@@
    +*request_threaded_irq@p(...)
    +
    +@match depends on report || org@
    +expression irq;
    +position p != r1.p;
    +@@
    +request_threaded_irq@p(irq, NULL, ...)
    +
    +@script:python depends on org@
    +p << match.p;
    +@@
    +msg = "ERROR: Threaded IRQ with no primary handler requested without IRQF_ONESHOT"
    +coccilib.org.print_todo(p[0],msg)
    +
    +@script:python depends on report@
    +p << match.p;
    +@@
    +msg = "ERROR: Threaded IRQ with no primary handler requested without IRQF_ONESHOT"
    +coccilib.report.print_report(p[0],msg)
    --
    1.7.10


    \
     
     \ /
      Last update: 2012-07-01 14:01    [W:8.748 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site