Commit 4a05f067528610cfd41eb158225db697ae726d51

Authored by Julia Lawall
Committed by Michal Marek
1 parent 47f67ea902

coccinelle: semantic patch to check for PTR_ERR after reassignment

Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Signed-off-by: Michal Marek <mmarek@suse.cz>

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

scripts/coccinelle/misc/cstptr.cocci
  1 +/// PTR_ERR should be applied before its argument is reassigned, typically
  2 +/// to NULL
  3 +///
  4 +// Confidence: High
  5 +// Copyright: (C) 2012 Julia Lawall, INRIA/LIP6. GPLv2.
  6 +// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. GPLv2.
  7 +// URL: http://coccinelle.lip6.fr/
  8 +// Comments:
  9 +// Options: -no_includes -include_headers
  10 +
  11 +virtual org
  12 +virtual report
  13 +virtual context
  14 +
  15 +@r exists@
  16 +expression e,e1;
  17 +constant c;
  18 +position p1,p2;
  19 +@@
  20 +
  21 +*e@p1 = c
  22 +... when != e = e1
  23 + when != &e
  24 + when != true IS_ERR(e)
  25 +*PTR_ERR@p2(e)
  26 +
  27 +@script:python depends on org@
  28 +p1 << r.p1;
  29 +p2 << r.p2;
  30 +@@
  31 +
  32 +cocci.print_main("PTR_ERR",p2)
  33 +cocci.print_secs("assignment",p1)
  34 +
  35 +@script:python depends on report@
  36 +p1 << r.p1;
  37 +p2 << r.p2;
  38 +@@
  39 +
  40 +msg = "ERROR: PTR_ERR applied after initialization to constant on line %s" % (p1[0].line)
  41 +coccilib.report.print_report(p2[0],msg)