blob: 7b48287b3dc13a2988bb2f86506d0e2efd9e2f01 [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001// SPDX-License-Identifier: GPL-2.0
Fabio Estevam9473a622015-05-24 17:45:54 -03002/// Since commit 1c6c69525b40 ("genirq: Reject bogus threaded irq requests")
3/// threaded IRQs without a primary handler need to be requested with
4/// IRQF_ONESHOT, otherwise the request will fail.
5///
6/// So pass the IRQF_ONESHOT flag in this case.
Lars-Peter Clausenf1f45502012-07-01 13:17:07 +02007///
8//
Vaishali Thakkard1e774f2016-11-23 14:16:42 +05309// Confidence: Moderate
Lars-Peter Clausenf1f45502012-07-01 13:17:07 +020010// Comments:
11// Options: --no-includes
12
13virtual patch
14virtual context
15virtual org
16virtual report
17
18@r1@
Vaishali Thakkardca24c42016-11-23 14:16:39 +053019expression dev, irq, thread_fn;
Lars-Peter Clausenf1f45502012-07-01 13:17:07 +020020position p;
21@@
Valentin Rothberg2c2b9132015-03-04 09:32:32 +010022(
Lars-Peter Clausenf1f45502012-07-01 13:17:07 +020023request_threaded_irq@p(irq, NULL, thread_fn,
24(
Vaishali Thakkardca24c42016-11-23 14:16:39 +053025IRQF_ONESHOT | ...
Lars-Peter Clausenf1f45502012-07-01 13:17:07 +020026|
27IRQF_ONESHOT
28)
29, ...)
Valentin Rothberg2c2b9132015-03-04 09:32:32 +010030|
31devm_request_threaded_irq@p(dev, irq, NULL, thread_fn,
32(
Vaishali Thakkardca24c42016-11-23 14:16:39 +053033IRQF_ONESHOT | ...
Valentin Rothberg2c2b9132015-03-04 09:32:32 +010034|
35IRQF_ONESHOT
36)
37, ...)
38)
Lars-Peter Clausenf1f45502012-07-01 13:17:07 +020039
Vaishali Thakkardca24c42016-11-23 14:16:39 +053040@r2@
41expression dev, irq, thread_fn, flags, e;
Lars-Peter Clausenf1f45502012-07-01 13:17:07 +020042position p != r1.p;
43@@
Valentin Rothberg2c2b9132015-03-04 09:32:32 +010044(
Vaishali Thakkardca24c42016-11-23 14:16:39 +053045flags = IRQF_ONESHOT | ...
46|
47flags |= IRQF_ONESHOT | ...
48)
49... when != flags = e
50(
51request_threaded_irq@p(irq, NULL, thread_fn, flags, ...);
52|
53devm_request_threaded_irq@p(dev, irq, NULL, thread_fn, flags, ...);
54)
55
56@depends on patch@
57expression dev, irq, thread_fn, flags;
58position p != {r1.p,r2.p};
59@@
60(
Lars-Peter Clausenf1f45502012-07-01 13:17:07 +020061request_threaded_irq@p(irq, NULL, thread_fn,
62(
63-0
64+IRQF_ONESHOT
65|
66-flags
67+flags | IRQF_ONESHOT
68)
69, ...)
Valentin Rothberg2c2b9132015-03-04 09:32:32 +010070|
71devm_request_threaded_irq@p(dev, irq, NULL, thread_fn,
72(
73-0
74+IRQF_ONESHOT
75|
76-flags
77+flags | IRQF_ONESHOT
78)
79, ...)
80)
Lars-Peter Clausenf1f45502012-07-01 13:17:07 +020081
82@depends on context@
Vaishali Thakkard1e774f2016-11-23 14:16:42 +053083expression dev, irq;
Vaishali Thakkardca24c42016-11-23 14:16:39 +053084position p != {r1.p,r2.p};
Lars-Peter Clausenf1f45502012-07-01 13:17:07 +020085@@
Vaishali Thakkard1e774f2016-11-23 14:16:42 +053086(
Vaishali Thakkar35b303a2016-11-23 14:16:46 +053087*request_threaded_irq@p(irq, NULL, ...)
Vaishali Thakkard1e774f2016-11-23 14:16:42 +053088|
89*devm_request_threaded_irq@p(dev, irq, NULL, ...)
90)
91
Lars-Peter Clausenf1f45502012-07-01 13:17:07 +020092
93@match depends on report || org@
Vaishali Thakkard1e774f2016-11-23 14:16:42 +053094expression dev, irq;
Vaishali Thakkardca24c42016-11-23 14:16:39 +053095position p != {r1.p,r2.p};
Lars-Peter Clausenf1f45502012-07-01 13:17:07 +020096@@
Vaishali Thakkard1e774f2016-11-23 14:16:42 +053097(
Lars-Peter Clausenf1f45502012-07-01 13:17:07 +020098request_threaded_irq@p(irq, NULL, ...)
Vaishali Thakkard1e774f2016-11-23 14:16:42 +053099|
100devm_request_threaded_irq@p(dev, irq, NULL, ...)
101)
Lars-Peter Clausenf1f45502012-07-01 13:17:07 +0200102
103@script:python depends on org@
104p << match.p;
105@@
106msg = "ERROR: Threaded IRQ with no primary handler requested without IRQF_ONESHOT"
107coccilib.org.print_todo(p[0],msg)
108
109@script:python depends on report@
110p << match.p;
111@@
112msg = "ERROR: Threaded IRQ with no primary handler requested without IRQF_ONESHOT"
113coccilib.report.print_report(p[0],msg)