Skip to content

Commit 9b3ae64

Browse files
JuliaLawalltorvalds
authored andcommitted
scripts/coccinelle/api/simple_open.cocci: semantic patch for simple_open()
Find instances of an open-coded simple_open() and replace them with calls to simple_open(). Signed-off-by: Julia Lawall <[email protected]> Reported-by: Stephen Boyd <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
1 parent 20955e8 commit 9b3ae64

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
/// This removes an open coded simple_open() function
2+
/// and replaces file operations references to the function
3+
/// with simple_open() instead.
4+
///
5+
// Confidence: High
6+
// Comments:
7+
// Options: -no_includes -include_headers
8+
9+
virtual patch
10+
virtual report
11+
12+
@ open depends on patch @
13+
identifier open_f != simple_open;
14+
identifier i, f;
15+
@@
16+
-int open_f(struct inode *i, struct file *f)
17+
-{
18+
(
19+
-if (i->i_private)
20+
-f->private_data = i->i_private;
21+
|
22+
-f->private_data = i->i_private;
23+
)
24+
-return 0;
25+
-}
26+
27+
@ has_open depends on open @
28+
identifier fops;
29+
identifier open.open_f;
30+
@@
31+
struct file_operations fops = {
32+
...,
33+
-.open = open_f,
34+
+.open = simple_open,
35+
...
36+
};
37+
38+
@ openr depends on report @
39+
identifier open_f != simple_open;
40+
identifier i, f;
41+
position p;
42+
@@
43+
int open_f@p(struct inode *i, struct file *f)
44+
{
45+
(
46+
if (i->i_private)
47+
f->private_data = i->i_private;
48+
|
49+
f->private_data = i->i_private;
50+
)
51+
return 0;
52+
}
53+
54+
@ has_openr depends on openr @
55+
identifier fops;
56+
identifier openr.open_f;
57+
position p;
58+
@@
59+
struct file_operations fops = {
60+
...,
61+
.open = open_f@p,
62+
...
63+
};
64+
65+
@script:python@
66+
pf << openr.p;
67+
ps << has_openr.p;
68+
@@
69+
70+
coccilib.report.print_report(pf[0],"WARNING opportunity for simple_open, see also structure on line %s"%(ps[0].line))

0 commit comments

Comments
 (0)