dm thin: fix to consistently zero-fill reads to unprovisioned blocks
[linux/fpc-iii.git] / scripts / coccinelle / api / d_find_alias.cocci
blob9594c9f7eb8d9c5552ea7141138969230f00d691
1 /// Make sure calls to d_find_alias() have a corresponding call to dput().
2 //
3 // Keywords: d_find_alias, dput
4 //
5 // Confidence: Moderate
6 // URL: http://coccinelle.lip6.fr/
7 // Options: --include-headers
9 virtual context
10 virtual org
11 virtual patch
12 virtual report
14 @r exists@
15 local idexpression struct dentry *dent;
16 expression E, E1;
17 statement S1, S2;
18 position p1, p2;
21         if (!(dent@p1 = d_find_alias(...))) S1
23         dent@p1 = d_find_alias(...)
26 <...when != dput(dent)
27     when != if (...) { <+... dput(dent) ...+> }
28     when != true !dent || ...
29     when != dent = E
30     when != E = dent
31 if (!dent || ...) S2
32 ...>
34         return <+...dent...+>;
36         return @p2 ...;
38         dent@p2 = E1;
40         E1 = dent;
43 @depends on context@
44 local idexpression struct dentry *r.dent;
45 position r.p1,r.p2;
47 * dent@p1 = ...
48   ...
50 * return@p2 ...;
52 * dent@p2
56 @script:python depends on org@
57 p1 << r.p1;
58 p2 << r.p2;
60 cocci.print_main("Missing call to dput()",p1)
61 cocci.print_secs("",p2)
63 @depends on patch@
64 local idexpression struct dentry *r.dent;
65 position r.p2;
68 + dput(dent);
69   return @p2 ...;
71 + dput(dent);
72   dent@p2 = ...;
75 @script:python depends on report@
76 p1 << r.p1;
77 p2 << r.p2;
79 msg = "Missing call to dput() at line %s."
80 coccilib.report.print_report(p1[0], msg % (p2[0].line))