~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/scripts/coccinelle/api/d_find_alias.cocci

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 // SPDX-License-Identifier: GPL-2.0
  2 /// Make sure calls to d_find_alias() have a corresponding call to dput().
  3 //
  4 // Keywords: d_find_alias, dput
  5 //
  6 // Confidence: Moderate
  7 // URL: https://coccinelle.gitlabpages.inria.fr/website
  8 // Options: --include-headers
  9 
 10 virtual context
 11 virtual org
 12 virtual patch
 13 virtual report
 14 
 15 @r exists@
 16 local idexpression struct dentry *dent;
 17 expression E, E1;
 18 statement S1, S2;
 19 position p1, p2;
 20 @@
 21 (
 22         if (!(dent@p1 = d_find_alias(...))) S1
 23 |
 24         dent@p1 = d_find_alias(...)
 25 )
 26 
 27 <...when != dput(dent)
 28     when != if (...) { <+... dput(dent) ...+> }
 29     when != true !dent || ...
 30     when != dent = E
 31     when != E = dent
 32 if (!dent || ...) S2
 33 ...>
 34 (
 35         return <+...dent...+>;
 36 |
 37         return @p2 ...;
 38 |
 39         dent@p2 = E1;
 40 |
 41         E1 = dent;
 42 )
 43 
 44 @depends on context@
 45 local idexpression struct dentry *r.dent;
 46 position r.p1,r.p2;
 47 @@
 48 * dent@p1 = ...
 49   ...
 50 (
 51 * return@p2 ...;
 52 |
 53 * dent@p2
 54 )
 55 
 56 
 57 @script:python depends on org@
 58 p1 << r.p1;
 59 p2 << r.p2;
 60 @@
 61 cocci.print_main("Missing call to dput()",p1)
 62 cocci.print_secs("",p2)
 63 
 64 @depends on patch@
 65 local idexpression struct dentry *r.dent;
 66 position r.p2;
 67 @@
 68 (
 69 + dput(dent);
 70   return @p2 ...;
 71 |
 72 + dput(dent);
 73   dent@p2 = ...;
 74 )
 75 
 76 @script:python depends on report@
 77 p1 << r.p1;
 78 p2 << r.p2;
 79 @@
 80 msg = "Missing call to dput() at line %s."
 81 coccilib.report.print_report(p1[0], msg % (p2[0].line))

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php