blob: bd1a2a4ee106d04ff847ec5775a52c644e68c4d8 [file] [log] [blame]
Fabio Estevamca34cba2015-05-09 17:09:30 -03001/// Remove an open coded simple_open() function
2/// and replace file operations references to the function
Julia Lawall9b3ae642012-04-05 14:25:10 -07003/// with simple_open() instead.
4///
5// Confidence: High
6// Comments:
Nicolas Palix93f14462013-06-20 13:10:56 +02007// Options: --no-includes --include-headers
Julia Lawall9b3ae642012-04-05 14:25:10 -07008
9virtual patch
10virtual report
11
12@ open depends on patch @
13identifier open_f != simple_open;
14identifier 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 @
28identifier fops;
29identifier open.open_f;
30@@
31struct file_operations fops = {
32...,
33-.open = open_f,
34+.open = simple_open,
35...
36};
37
38@ openr depends on report @
39identifier open_f != simple_open;
40identifier i, f;
41position p;
42@@
43int open_f@p(struct inode *i, struct file *f)
44{
45(
46if (i->i_private)
47f->private_data = i->i_private;
48|
49f->private_data = i->i_private;
50)
51return 0;
52}
53
54@ has_openr depends on openr @
55identifier fops;
56identifier openr.open_f;
57position p;
58@@
59struct file_operations fops = {
60...,
61.open = open_f@p,
62...
63};
64
65@script:python@
66pf << openr.p;
67ps << has_openr.p;
68@@
69
70coccilib.report.print_report(pf[0],"WARNING opportunity for simple_open, see also structure on line %s"%(ps[0].line))