1// SPDX-License-Identifier: GPL-2.0-only 2/// Use BUG_ON instead of a if condition followed by BUG. 3/// 4//# This makes an effort to find cases where BUG() follows an if 5//# condition on an expression and replaces the if condition and BUG() 6//# with a BUG_ON having the conditional expression of the if statement 7//# as argument. 8// 9// Confidence: High 10// Copyright: (C) 2014 Himangi Saraogi. 11// Comments: 12// Options: --no-includes --include-headers 13 14virtual patch 15virtual context 16virtual org 17virtual report 18 19//---------------------------------------------------------- 20// For context mode 21//---------------------------------------------------------- 22 23@depends on context@ 24expression e; 25@@ 26 27*if (e) BUG(); 28 29//---------------------------------------------------------- 30// For patch mode 31//---------------------------------------------------------- 32 33@depends on patch@ 34expression e; 35@@ 36 37-if (e) BUG(); 38+BUG_ON(e); 39 40//---------------------------------------------------------- 41// For org and report mode 42//---------------------------------------------------------- 43 44@r depends on (org || report)@ 45expression e; 46position p; 47@@ 48 49 if (e) BUG@p (); 50 51@script:python depends on org@ 52p << r.p; 53@@ 54 55coccilib.org.print_todo(p[0], "WARNING use BUG_ON") 56 57@script:python depends on report@ 58p << r.p; 59@@ 60 61msg="WARNING: Use BUG_ON instead of if condition followed by BUG.\nPlease make sure the condition has no side effects (see conditional BUG_ON definition in include/asm-generic/bug.h)" 62coccilib.report.print_report(p[0], msg) 63 64