1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun/// Remove dev_err() messages after platform_get_irq*() failures 3*4882a593Smuzhiyun// 4*4882a593Smuzhiyun// Confidence: Medium 5*4882a593Smuzhiyun// Options: --include-headers 6*4882a593Smuzhiyun 7*4882a593Smuzhiyunvirtual patch 8*4882a593Smuzhiyunvirtual context 9*4882a593Smuzhiyunvirtual org 10*4882a593Smuzhiyunvirtual report 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun@depends on context@ 13*4882a593Smuzhiyunexpression ret; 14*4882a593Smuzhiyunstruct platform_device *E; 15*4882a593Smuzhiyun@@ 16*4882a593Smuzhiyun 17*4882a593Smuzhiyunret = 18*4882a593Smuzhiyun( 19*4882a593Smuzhiyunplatform_get_irq 20*4882a593Smuzhiyun| 21*4882a593Smuzhiyunplatform_get_irq_byname 22*4882a593Smuzhiyun)(E, ...); 23*4882a593Smuzhiyun 24*4882a593Smuzhiyunif ( \( ret < 0 \| ret <= 0 \) ) 25*4882a593Smuzhiyun{ 26*4882a593Smuzhiyun( 27*4882a593Smuzhiyunif (ret != -EPROBE_DEFER) 28*4882a593Smuzhiyun{ ... 29*4882a593Smuzhiyun*dev_err(...); 30*4882a593Smuzhiyun... } 31*4882a593Smuzhiyun| 32*4882a593Smuzhiyun... 33*4882a593Smuzhiyun*dev_err(...); 34*4882a593Smuzhiyun) 35*4882a593Smuzhiyun... 36*4882a593Smuzhiyun} 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun@depends on patch@ 39*4882a593Smuzhiyunexpression ret; 40*4882a593Smuzhiyunstruct platform_device *E; 41*4882a593Smuzhiyun@@ 42*4882a593Smuzhiyun 43*4882a593Smuzhiyunret = 44*4882a593Smuzhiyun( 45*4882a593Smuzhiyunplatform_get_irq 46*4882a593Smuzhiyun| 47*4882a593Smuzhiyunplatform_get_irq_byname 48*4882a593Smuzhiyun)(E, ...); 49*4882a593Smuzhiyun 50*4882a593Smuzhiyunif ( \( ret < 0 \| ret <= 0 \) ) 51*4882a593Smuzhiyun{ 52*4882a593Smuzhiyun( 53*4882a593Smuzhiyun-if (ret != -EPROBE_DEFER) 54*4882a593Smuzhiyun-{ ... 55*4882a593Smuzhiyun-dev_err(...); 56*4882a593Smuzhiyun-... } 57*4882a593Smuzhiyun| 58*4882a593Smuzhiyun... 59*4882a593Smuzhiyun-dev_err(...); 60*4882a593Smuzhiyun) 61*4882a593Smuzhiyun... 62*4882a593Smuzhiyun} 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun@r depends on org || report@ 65*4882a593Smuzhiyunposition p1; 66*4882a593Smuzhiyunexpression ret; 67*4882a593Smuzhiyunstruct platform_device *E; 68*4882a593Smuzhiyun@@ 69*4882a593Smuzhiyun 70*4882a593Smuzhiyunret = 71*4882a593Smuzhiyun( 72*4882a593Smuzhiyunplatform_get_irq 73*4882a593Smuzhiyun| 74*4882a593Smuzhiyunplatform_get_irq_byname 75*4882a593Smuzhiyun)(E, ...); 76*4882a593Smuzhiyun 77*4882a593Smuzhiyunif ( \( ret < 0 \| ret <= 0 \) ) 78*4882a593Smuzhiyun{ 79*4882a593Smuzhiyun( 80*4882a593Smuzhiyunif (ret != -EPROBE_DEFER) 81*4882a593Smuzhiyun{ ... 82*4882a593Smuzhiyundev_err@p1(...); 83*4882a593Smuzhiyun... } 84*4882a593Smuzhiyun| 85*4882a593Smuzhiyun... 86*4882a593Smuzhiyundev_err@p1(...); 87*4882a593Smuzhiyun) 88*4882a593Smuzhiyun... 89*4882a593Smuzhiyun} 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun@script:python depends on org@ 92*4882a593Smuzhiyunp1 << r.p1; 93*4882a593Smuzhiyun@@ 94*4882a593Smuzhiyun 95*4882a593Smuzhiyuncocci.print_main(p1) 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun@script:python depends on report@ 98*4882a593Smuzhiyunp1 << r.p1; 99*4882a593Smuzhiyun@@ 100*4882a593Smuzhiyun 101*4882a593Smuzhiyunmsg = "line %s is redundant because platform_get_irq() already prints an error" % (p1[0].line) 102*4882a593Smuzhiyuncoccilib.report.print_report(p1[0],msg) 103