]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blame - scripts/coccinelle/api/d_find_alias.cocci
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
[mirror_ubuntu-bionic-kernel.git] / scripts / coccinelle / api / d_find_alias.cocci
CommitLineData
b2441318 1// SPDX-License-Identifier: GPL-2.0
af56e3f0
CR
2/// Make sure calls to d_find_alias() have a corresponding call to dput().
3//
4// Keywords: d_find_alias, dput
5//
6// Confidence: Moderate
7// URL: http://coccinelle.lip6.fr/
93f14468 8// Options: --include-headers
af56e3f0
CR
9
10virtual context
11virtual org
12virtual patch
13virtual report
14
15@r exists@
16local idexpression struct dentry *dent;
17expression E, E1;
18statement S1, S2;
19position p1, p2;
20@@
21(
22 if (!(dent@p1 = d_find_alias(...))) S1
23|
24 dent@p1 = d_find_alias(...)
25)
26
27<...when != dput(dent)
28 when != if (...) { <+... dput(dent) ...+> }
29 when != true !dent || ...
30 when != dent = E
31 when != E = dent
32if (!dent || ...) S2
33...>
34(
35 return <+...dent...+>;
36|
37 return @p2 ...;
38|
39 dent@p2 = E1;
40|
41 E1 = dent;
42)
43
44@depends on context@
45local idexpression struct dentry *r.dent;
46position r.p1,r.p2;
47@@
48* dent@p1 = ...
49 ...
50(
51* return@p2 ...;
52|
53* dent@p2
54)
55
56
57@script:python depends on org@
58p1 << r.p1;
59p2 << r.p2;
60@@
61cocci.print_main("Missing call to dput()",p1)
62cocci.print_secs("",p2)
63
64@depends on patch@
65local idexpression struct dentry *r.dent;
66position r.p2;
67@@
68(
69+ dput(dent);
70 return @p2 ...;
71|
72+ dput(dent);
73 dent@p2 = ...;
74)
75
76@script:python depends on report@
77p1 << r.p1;
78p2 << r.p2;
79@@
80msg = "Missing call to dput() at line %s."
81coccilib.report.print_report(p1[0], msg % (p2[0].line))