18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci/// PTR_ERR should be applied before its argument is reassigned, typically 38c2ecf20Sopenharmony_ci/// to NULL 48c2ecf20Sopenharmony_ci/// 58c2ecf20Sopenharmony_ci// Confidence: High 68c2ecf20Sopenharmony_ci// Copyright: (C) 2012 Julia Lawall, INRIA/LIP6. 78c2ecf20Sopenharmony_ci// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. 88c2ecf20Sopenharmony_ci// URL: http://coccinelle.lip6.fr/ 98c2ecf20Sopenharmony_ci// Comments: 108c2ecf20Sopenharmony_ci// Options: --no-includes --include-headers 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_civirtual org 138c2ecf20Sopenharmony_civirtual report 148c2ecf20Sopenharmony_civirtual context 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ci@r exists@ 178c2ecf20Sopenharmony_ciexpression e,e1; 188c2ecf20Sopenharmony_ciconstant c; 198c2ecf20Sopenharmony_ciposition p1,p2; 208c2ecf20Sopenharmony_ci@@ 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ci*e@p1 = c 238c2ecf20Sopenharmony_ci... when != e = e1 248c2ecf20Sopenharmony_ci when != &e 258c2ecf20Sopenharmony_ci when != true IS_ERR(e) 268c2ecf20Sopenharmony_ci*PTR_ERR@p2(e) 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ci@script:python depends on org@ 298c2ecf20Sopenharmony_cip1 << r.p1; 308c2ecf20Sopenharmony_cip2 << r.p2; 318c2ecf20Sopenharmony_ci@@ 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_cicocci.print_main("PTR_ERR",p2) 348c2ecf20Sopenharmony_cicocci.print_secs("assignment",p1) 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ci@script:python depends on report@ 378c2ecf20Sopenharmony_cip1 << r.p1; 388c2ecf20Sopenharmony_cip2 << r.p2; 398c2ecf20Sopenharmony_ci@@ 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_cimsg = "ERROR: PTR_ERR applied after initialization to constant on line %s" % (p1[0].line) 428c2ecf20Sopenharmony_cicoccilib.report.print_report(p2[0],msg) 43