Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / scripts / coccinelle / misc / irqf_oneshot.cocci
1 /// Make sure threaded IRQs without a primary handler are always request with
2 /// IRQF_ONESHOT
3 ///
4 //
5 // Confidence: Good
6 // Comments:
7 // Options: --no-includes
8
9 virtual patch
10 virtual context
11 virtual org
12 virtual report
13
14 @r1@
15 expression dev;
16 expression irq;
17 expression thread_fn;
18 expression flags;
19 position p;
20 @@
21 (
22 request_threaded_irq@p(irq, NULL, thread_fn,
23 (
24 flags | IRQF_ONESHOT
25 |
26 IRQF_ONESHOT
27 )
28 , ...)
29 |
30 devm_request_threaded_irq@p(dev, irq, NULL, thread_fn,
31 (
32 flags | IRQF_ONESHOT
33 |
34 IRQF_ONESHOT
35 )
36 , ...)
37 )
38
39 @depends on patch@
40 expression dev;
41 expression irq;
42 expression thread_fn;
43 expression flags;
44 position p != r1.p;
45 @@
46 (
47 request_threaded_irq@p(irq, NULL, thread_fn,
48 (
49 -0
50 +IRQF_ONESHOT
51 |
52 -flags
53 +flags | IRQF_ONESHOT
54 )
55 , ...)
56 |
57 devm_request_threaded_irq@p(dev, irq, NULL, thread_fn,
58 (
59 -0
60 +IRQF_ONESHOT
61 |
62 -flags
63 +flags | IRQF_ONESHOT
64 )
65 , ...)
66 )
67
68 @depends on context@
69 position p != r1.p;
70 @@
71 *request_threaded_irq@p(...)
72
73 @match depends on report || org@
74 expression irq;
75 position p != r1.p;
76 @@
77 request_threaded_irq@p(irq, NULL, ...)
78
79 @script:python depends on org@
80 p << match.p;
81 @@
82 msg = "ERROR: Threaded IRQ with no primary handler requested without IRQF_ONESHOT"
83 coccilib.org.print_todo(p[0],msg)
84
85 @script:python depends on report@
86 p << match.p;
87 @@
88 msg = "ERROR: Threaded IRQ with no primary handler requested without IRQF_ONESHOT"
89 coccilib.report.print_report(p[0],msg)