| // 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) |