18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci/// Use WARN(1,...) rather than printk followed by WARN_ON(1) 38c2ecf20Sopenharmony_ci/// 48c2ecf20Sopenharmony_ci// Confidence: High 58c2ecf20Sopenharmony_ci// Copyright: (C) 2012 Julia Lawall, INRIA/LIP6. 68c2ecf20Sopenharmony_ci// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. 78c2ecf20Sopenharmony_ci// URL: http://coccinelle.lip6.fr/ 88c2ecf20Sopenharmony_ci// Comments: 98c2ecf20Sopenharmony_ci// Options: --no-includes --include-headers 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_civirtual patch 128c2ecf20Sopenharmony_civirtual context 138c2ecf20Sopenharmony_civirtual org 148c2ecf20Sopenharmony_civirtual report 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ci@bad1@ 178c2ecf20Sopenharmony_ciposition p; 188c2ecf20Sopenharmony_ci@@ 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ciprintk(...); 218c2ecf20Sopenharmony_ciprintk@p(...); 228c2ecf20Sopenharmony_ciWARN_ON(1); 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci@r1 depends on context || report || org@ 258c2ecf20Sopenharmony_ciposition p != bad1.p; 268c2ecf20Sopenharmony_ci@@ 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ci printk@p(...); 298c2ecf20Sopenharmony_ci*WARN_ON(1); 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ci@script:python depends on org@ 328c2ecf20Sopenharmony_cip << r1.p; 338c2ecf20Sopenharmony_ci@@ 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_cicocci.print_main("printk + WARN_ON can be just WARN",p) 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_ci@script:python depends on report@ 388c2ecf20Sopenharmony_cip << r1.p; 398c2ecf20Sopenharmony_ci@@ 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_cimsg = "SUGGESTION: printk + WARN_ON can be just WARN" 428c2ecf20Sopenharmony_cicoccilib.report.print_report(p[0],msg) 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_ci@ok1 depends on patch@ 458c2ecf20Sopenharmony_ciexpression list es; 468c2ecf20Sopenharmony_ciposition p != bad1.p; 478c2ecf20Sopenharmony_ci@@ 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ci-printk@p( 508c2ecf20Sopenharmony_ci+WARN(1, 518c2ecf20Sopenharmony_ci es); 528c2ecf20Sopenharmony_ci-WARN_ON(1); 538c2ecf20Sopenharmony_ci 548c2ecf20Sopenharmony_ci@depends on patch@ 558c2ecf20Sopenharmony_ciexpression list ok1.es; 568c2ecf20Sopenharmony_ci@@ 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_ciif (...) 598c2ecf20Sopenharmony_ci- { 608c2ecf20Sopenharmony_ci WARN(1,es); 618c2ecf20Sopenharmony_ci- } 628c2ecf20Sopenharmony_ci 638c2ecf20Sopenharmony_ci// -------------------------------------------------------------------- 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_ci@bad2@ 668c2ecf20Sopenharmony_ciposition p; 678c2ecf20Sopenharmony_ci@@ 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_ciprintk(...); 708c2ecf20Sopenharmony_ciprintk@p(...); 718c2ecf20Sopenharmony_ciWARN_ON_ONCE(1); 728c2ecf20Sopenharmony_ci 738c2ecf20Sopenharmony_ci@r2 depends on context || report || org@ 748c2ecf20Sopenharmony_ciposition p != bad1.p; 758c2ecf20Sopenharmony_ci@@ 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_ci printk@p(...); 788c2ecf20Sopenharmony_ci*WARN_ON_ONCE(1); 798c2ecf20Sopenharmony_ci 808c2ecf20Sopenharmony_ci@script:python depends on org@ 818c2ecf20Sopenharmony_cip << r2.p; 828c2ecf20Sopenharmony_ci@@ 838c2ecf20Sopenharmony_ci 848c2ecf20Sopenharmony_cicocci.print_main("printk + WARN_ON_ONCE can be just WARN_ONCE",p) 858c2ecf20Sopenharmony_ci 868c2ecf20Sopenharmony_ci@script:python depends on report@ 878c2ecf20Sopenharmony_cip << r2.p; 888c2ecf20Sopenharmony_ci@@ 898c2ecf20Sopenharmony_ci 908c2ecf20Sopenharmony_cimsg = "SUGGESTION: printk + WARN_ON_ONCE can be just WARN_ONCE" 918c2ecf20Sopenharmony_cicoccilib.report.print_report(p[0],msg) 928c2ecf20Sopenharmony_ci 938c2ecf20Sopenharmony_ci@ok2 depends on patch@ 948c2ecf20Sopenharmony_ciexpression list es; 958c2ecf20Sopenharmony_ciposition p != bad2.p; 968c2ecf20Sopenharmony_ci@@ 978c2ecf20Sopenharmony_ci 988c2ecf20Sopenharmony_ci-printk@p( 998c2ecf20Sopenharmony_ci+WARN_ONCE(1, 1008c2ecf20Sopenharmony_ci es); 1018c2ecf20Sopenharmony_ci-WARN_ON_ONCE(1); 1028c2ecf20Sopenharmony_ci 1038c2ecf20Sopenharmony_ci@depends on patch@ 1048c2ecf20Sopenharmony_ciexpression list ok2.es; 1058c2ecf20Sopenharmony_ci@@ 1068c2ecf20Sopenharmony_ci 1078c2ecf20Sopenharmony_ciif (...) 1088c2ecf20Sopenharmony_ci- { 1098c2ecf20Sopenharmony_ci WARN_ONCE(1,es); 1108c2ecf20Sopenharmony_ci- } 111