linux/scripts/coccinelle/api/err_cast.cocci
<<
>>
Prefs
   1///
   2/// Use ERR_CAST inlined function instead of ERR_PTR(PTR_ERR(...))
   3///
   4// Confidence: High
   5// Copyright: (C) 2009, 2010 Nicolas Palix, DIKU.  GPLv2.
   6// Copyright: (C) 2009, 2010 Julia Lawall, DIKU.  GPLv2.
   7// Copyright: (C) 2009, 2010 Gilles Muller, INRIA/LiP6.  GPLv2.
   8// URL: http://coccinelle.lip6.fr/
   9// Options:
  10//
  11// Keywords: ERR_PTR, PTR_ERR, ERR_CAST
  12// Version min: 2.6.25
  13//
  14
  15virtual context
  16virtual patch
  17virtual org
  18virtual report
  19
  20
  21@ depends on context && !patch && !org && !report@
  22expression x;
  23@@
  24
  25* ERR_PTR(PTR_ERR(x))
  26
  27@ depends on !context && patch && !org && !report @
  28expression x;
  29@@
  30
  31- ERR_PTR(PTR_ERR(x))
  32+ ERR_CAST(x)
  33
  34@r depends on !context && !patch && (org || report)@
  35expression x;
  36position p;
  37@@
  38
  39 ERR_PTR@p(PTR_ERR(x))
  40
  41@script:python depends on org@
  42p << r.p;
  43x << r.x;
  44@@
  45
  46msg="WARNING ERR_CAST can be used with %s" % (x)
  47msg_safe=msg.replace("[","@(").replace("]",")")
  48coccilib.org.print_todo(p[0], msg_safe)
  49
  50@script:python depends on report@
  51p << r.p;
  52x << r.x;
  53@@
  54
  55msg="WARNING: ERR_CAST can be used with %s" % (x)
  56coccilib.report.print_report(p[0], msg)
  57