|  | // SPDX-License-Identifier: GPL-2.0 | 
|  | /// Remove dev_err() messages after platform_get_irq*() failures | 
|  | // | 
|  | // Confidence: Medium | 
|  | // Options: --include-headers | 
|  |  | 
|  | virtual patch | 
|  | virtual context | 
|  | virtual org | 
|  | virtual report | 
|  |  | 
|  | @depends on context@ | 
|  | expression ret; | 
|  | struct platform_device *E; | 
|  | @@ | 
|  |  | 
|  | ret = | 
|  | ( | 
|  | platform_get_irq | 
|  | | | 
|  | platform_get_irq_byname | 
|  | )(E, ...); | 
|  |  | 
|  | if ( \( ret < 0 \| ret <= 0 \) ) | 
|  | { | 
|  | ( | 
|  | if (ret != -EPROBE_DEFER) | 
|  | { ... | 
|  | *dev_err(...); | 
|  | ... } | 
|  | | | 
|  | ... | 
|  | *dev_err(...); | 
|  | ) | 
|  | ... | 
|  | } | 
|  |  | 
|  | @depends on patch@ | 
|  | expression ret; | 
|  | struct platform_device *E; | 
|  | @@ | 
|  |  | 
|  | ret = | 
|  | ( | 
|  | platform_get_irq | 
|  | | | 
|  | platform_get_irq_byname | 
|  | )(E, ...); | 
|  |  | 
|  | if ( \( ret < 0 \| ret <= 0 \) ) | 
|  | { | 
|  | ( | 
|  | -if (ret != -EPROBE_DEFER) | 
|  | -{ ... | 
|  | -dev_err(...); | 
|  | -... } | 
|  | | | 
|  | ... | 
|  | -dev_err(...); | 
|  | ) | 
|  | ... | 
|  | } | 
|  |  | 
|  | @r depends on org || report@ | 
|  | position p1; | 
|  | expression ret; | 
|  | struct platform_device *E; | 
|  | @@ | 
|  |  | 
|  | ret = | 
|  | ( | 
|  | platform_get_irq | 
|  | | | 
|  | platform_get_irq_byname | 
|  | )(E, ...); | 
|  |  | 
|  | if ( \( ret < 0 \| ret <= 0 \) ) | 
|  | { | 
|  | ( | 
|  | if (ret != -EPROBE_DEFER) | 
|  | { ... | 
|  | dev_err@p1(...); | 
|  | ... } | 
|  | | | 
|  | ... | 
|  | dev_err@p1(...); | 
|  | ) | 
|  | ... | 
|  | } | 
|  |  | 
|  | @script:python depends on org@ | 
|  | p1 << r.p1; | 
|  | @@ | 
|  |  | 
|  | cocci.print_main(p1) | 
|  |  | 
|  | @script:python depends on report@ | 
|  | p1 << r.p1; | 
|  | @@ | 
|  |  | 
|  | msg = "line %s is redundant because platform_get_irq() already prints an error" % (p1[0].line) | 
|  | coccilib.report.print_report(p1[0],msg) |