198051ba2SStephen Boyd// SPDX-License-Identifier: GPL-2.0 298051ba2SStephen Boyd/// Remove dev_err() messages after platform_get_irq*() failures 398051ba2SStephen Boyd// 498051ba2SStephen Boyd// Confidence: Medium 598051ba2SStephen Boyd// Options: --include-headers 698051ba2SStephen Boyd 798051ba2SStephen Boydvirtual patch 898051ba2SStephen Boydvirtual context 998051ba2SStephen Boydvirtual org 1098051ba2SStephen Boydvirtual report 1198051ba2SStephen Boyd 1298051ba2SStephen Boyd@depends on context@ 1398051ba2SStephen Boydexpression ret; 1498051ba2SStephen Boydstruct platform_device *E; 1598051ba2SStephen Boyd@@ 1698051ba2SStephen Boyd 1798051ba2SStephen Boydret = 1898051ba2SStephen Boyd( 1998051ba2SStephen Boydplatform_get_irq 2098051ba2SStephen Boyd| 2198051ba2SStephen Boydplatform_get_irq_byname 2298051ba2SStephen Boyd)(E, ...); 2398051ba2SStephen Boyd 24ca7ce5a2SYueHaibingif ( \( ret < 0 \| ret <= 0 \) ) 2598051ba2SStephen Boyd{ 2698051ba2SStephen Boyd( 2798051ba2SStephen Boydif (ret != -EPROBE_DEFER) 2898051ba2SStephen Boyd{ ... 2998051ba2SStephen Boyd*dev_err(...); 3098051ba2SStephen Boyd... } 3198051ba2SStephen Boyd| 3298051ba2SStephen Boyd... 3398051ba2SStephen Boyd*dev_err(...); 3498051ba2SStephen Boyd) 3598051ba2SStephen Boyd... 3698051ba2SStephen Boyd} 3798051ba2SStephen Boyd 3898051ba2SStephen Boyd@depends on patch@ 3998051ba2SStephen Boydexpression ret; 4098051ba2SStephen Boydstruct platform_device *E; 4198051ba2SStephen Boyd@@ 4298051ba2SStephen Boyd 4398051ba2SStephen Boydret = 4498051ba2SStephen Boyd( 4598051ba2SStephen Boydplatform_get_irq 4698051ba2SStephen Boyd| 4798051ba2SStephen Boydplatform_get_irq_byname 4898051ba2SStephen Boyd)(E, ...); 4998051ba2SStephen Boyd 50ca7ce5a2SYueHaibingif ( \( ret < 0 \| ret <= 0 \) ) 5198051ba2SStephen Boyd{ 5298051ba2SStephen Boyd( 5398051ba2SStephen Boyd-if (ret != -EPROBE_DEFER) 5498051ba2SStephen Boyd-{ ... 5598051ba2SStephen Boyd-dev_err(...); 5698051ba2SStephen Boyd-... } 5798051ba2SStephen Boyd| 5898051ba2SStephen Boyd... 5998051ba2SStephen Boyd-dev_err(...); 6098051ba2SStephen Boyd) 6198051ba2SStephen Boyd... 6298051ba2SStephen Boyd} 6398051ba2SStephen Boyd 6498051ba2SStephen Boyd@r depends on org || report@ 6598051ba2SStephen Boydposition p1; 6698051ba2SStephen Boydexpression ret; 6798051ba2SStephen Boydstruct platform_device *E; 6898051ba2SStephen Boyd@@ 6998051ba2SStephen Boyd 7098051ba2SStephen Boydret = 7198051ba2SStephen Boyd( 7298051ba2SStephen Boydplatform_get_irq 7398051ba2SStephen Boyd| 7498051ba2SStephen Boydplatform_get_irq_byname 7598051ba2SStephen Boyd)(E, ...); 7698051ba2SStephen Boyd 77ca7ce5a2SYueHaibingif ( \( ret < 0 \| ret <= 0 \) ) 7898051ba2SStephen Boyd{ 7998051ba2SStephen Boyd( 8098051ba2SStephen Boydif (ret != -EPROBE_DEFER) 8198051ba2SStephen Boyd{ ... 8298051ba2SStephen Boyddev_err@p1(...); 8398051ba2SStephen Boyd... } 8498051ba2SStephen Boyd| 8598051ba2SStephen Boyd... 8698051ba2SStephen Boyddev_err@p1(...); 8798051ba2SStephen Boyd) 8898051ba2SStephen Boyd... 8998051ba2SStephen Boyd} 9098051ba2SStephen Boyd 9198051ba2SStephen Boyd@script:python depends on org@ 9298051ba2SStephen Boydp1 << r.p1; 9398051ba2SStephen Boyd@@ 9498051ba2SStephen Boyd 9598051ba2SStephen Boydcocci.print_main(p1) 9698051ba2SStephen Boyd 9798051ba2SStephen Boyd@script:python depends on report@ 9898051ba2SStephen Boydp1 << r.p1; 9998051ba2SStephen Boyd@@ 10098051ba2SStephen Boyd 10198051ba2SStephen Boydmsg = "line %s is redundant because platform_get_irq() already prints an error" % (p1[0].line) 10298051ba2SStephen Boydcoccilib.report.print_report(p1[0],msg) 103