History

Coccinelle: pm_runtime: ensure relevance of pm_runtime reports

pm_runtime.cocci starts with one rule that searches for a variety of functions calls, followed by various rules that report errors. Previously, the only connection between the first rule and the rest was to check that the first rule had matched somewhere. Change the rules to propagate a position from the first rule to the others, to make sure that the sites reported on are the same as the sites that were identified as having the relevant functions.

Julia Lawall committed 10 years ago

Commit d97629f1 parent 43d96391 file · +11 −7Browse files

Unified · Split

scripts/coccinelle/api/pm_runtime.cocci+11−7
@@ -17,9 +17,10 @@ virtual report · 16 unmodified lines
17 17
18@runtime_bad_err_handle exists@18@runtime_bad_err_handle exists@
19expression ret;19expression ret;
20position p;
20@@21@@
21(22(
22ret = \(pm_runtime_idle\|23ret@p = \(pm_runtime_idle\|
23 pm_runtime_suspend\|24 pm_runtime_suspend\|
24 pm_runtime_autosuspend\|25 pm_runtime_autosuspend\|
25 pm_runtime_resume\|26 pm_runtime_resume\|
@@ -47,12 +48,13 @@ IS_ERR_VALUE(ret) · 21 unmodified lines
47// For context mode48// For context mode
48//----------------------------------------------------------49//----------------------------------------------------------
49 50
50@depends on runtime_bad_err_handle && context@51@depends on context@
51identifier pm_runtime_api;52identifier pm_runtime_api;
52expression ret;53expression ret;
54position runtime_bad_err_handle.p;
53@@55@@
54(56(
55ret = pm_runtime_api(...);57ret@p = pm_runtime_api(...);
56...58...
57* IS_ERR_VALUE(ret)59* IS_ERR_VALUE(ret)
58...60...
@@ -62,12 +64,13 @@ ret = pm_runtime_api(...); · 3 unmodified lines
62// For patch mode64// For patch mode
63//----------------------------------------------------------65//----------------------------------------------------------
64 66
65@depends on runtime_bad_err_handle && patch@67@depends on patch@
66identifier pm_runtime_api;68identifier pm_runtime_api;
67expression ret;69expression ret;
70position runtime_bad_err_handle.p;
68@@71@@
69(72(
70ret = pm_runtime_api(...);73ret@p = pm_runtime_api(...);
71...74...
72- IS_ERR_VALUE(ret)75- IS_ERR_VALUE(ret)
73+ ret < 076+ ret < 0
@@ -78,13 +81,14 @@ ret = pm_runtime_api(...); · 4 unmodified lines
78// For org and report mode81// For org and report mode
79//----------------------------------------------------------82//----------------------------------------------------------
80 83
81@r depends on runtime_bad_err_handle && (org || report) exists@84@r depends on (org || report) exists@
82position p1, p2;85position p1, p2;
83identifier pm_runtime_api;86identifier pm_runtime_api;
84expression ret;87expression ret;
88position runtime_bad_err_handle.p;
85@@89@@
86(90(
87ret = pm_runtime_api@p1(...);91ret@p = pm_runtime_api@p1(...);
88...92...
89IS_ERR_VALUE@p2(ret)93IS_ERR_VALUE@p2(ret)
90...94...

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t