Commit 9b3ae64be658a573b33d05a8dc73b08d3345fa44

Authored by Julia Lawall
Committed by Linus Torvalds
1 parent 20955e891d

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 <Julia.Lawall@lip6.fr>
Reported-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 1 changed file with 70 additions and 0 deletions Side-by-side Diff

scripts/coccinelle/api/simple_open.cocci
  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))