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