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