platform_get_irq.cocci 1.2 KB

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