From d7c74e41da3f7aa586088ff41114ab062fef3775 Mon Sep 17 00:00:00 2001 From: Julia Lawall Date: Thu, 5 Apr 2012 14:25:10 -0700 Subject: [PATCH] --- yaml --- r: 298652 b: refs/heads/master c: 9b3ae64be658a573b33d05a8dc73b08d3345fa44 h: refs/heads/master v: v3 --- [refs] | 2 +- .../scripts/coccinelle/api/simple_open.cocci | 70 +++++++++++++++++++ 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 trunk/scripts/coccinelle/api/simple_open.cocci diff --git a/[refs] b/[refs] index 367ae5643089..0c30d330d8aa 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 20955e891d828b2027281fe3295dae6af8e0423b +refs/heads/master: 9b3ae64be658a573b33d05a8dc73b08d3345fa44 diff --git a/trunk/scripts/coccinelle/api/simple_open.cocci b/trunk/scripts/coccinelle/api/simple_open.cocci new file mode 100644 index 000000000000..05962f7be155 --- /dev/null +++ b/trunk/scripts/coccinelle/api/simple_open.cocci @@ -0,0 +1,70 @@ +/// This removes an open coded simple_open() function +/// and replaces file operations references to the function +/// with simple_open() instead. +/// +// Confidence: High +// Comments: +// Options: -no_includes -include_headers + +virtual patch +virtual report + +@ open depends on patch @ +identifier open_f != simple_open; +identifier i, f; +@@ +-int open_f(struct inode *i, struct file *f) +-{ +( +-if (i->i_private) +-f->private_data = i->i_private; +| +-f->private_data = i->i_private; +) +-return 0; +-} + +@ has_open depends on open @ +identifier fops; +identifier open.open_f; +@@ +struct file_operations fops = { +..., +-.open = open_f, ++.open = simple_open, +... +}; + +@ openr depends on report @ +identifier open_f != simple_open; +identifier i, f; +position p; +@@ +int open_f@p(struct inode *i, struct file *f) +{ +( +if (i->i_private) +f->private_data = i->i_private; +| +f->private_data = i->i_private; +) +return 0; +} + +@ has_openr depends on openr @ +identifier fops; +identifier openr.open_f; +position p; +@@ +struct file_operations fops = { +..., +.open = open_f@p, +... +}; + +@script:python@ +pf << openr.p; +ps << has_openr.p; +@@ + +coccilib.report.print_report(pf[0],"WARNING opportunity for simple_open, see also structure on line %s"%(ps[0].line))