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