ifnullfree.cocci 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. /// NULL check before some freeing functions is not needed.
  3. ///
  4. /// Based on checkpatch warning
  5. /// "kfree(NULL) is safe this check is probably not required"
  6. /// and kfreeaddr.cocci by Julia Lawall.
  7. ///
  8. // Copyright: (C) 2014 Fabian Frederick.
  9. // Comments: -
  10. // Options: --no-includes --include-headers
  11. virtual patch
  12. virtual org
  13. virtual report
  14. virtual context
  15. @r2 depends on patch@
  16. expression E;
  17. @@
  18. - if (E != NULL)
  19. (
  20. free(E);
  21. |
  22. kfree(E);
  23. |
  24. vfree(E);
  25. |
  26. vfree_recursive(E);
  27. |
  28. kmem_cache_free(E);
  29. |
  30. kmem_cache_destroy(E);
  31. |
  32. gzfree(E);
  33. )
  34. @r depends on context || report || org @
  35. expression E;
  36. position p;
  37. @@
  38. * if (E != NULL)
  39. * \(free@p\|kfree@p\|vfree@p\|debugfs_remove_recursive@p\|
  40. * kmem_cache_free@p\|kmem_cache_destroy@p\|gzfree@p\)(E);
  41. @script:python depends on org@
  42. p << r.p;
  43. @@
  44. cocci.print_main("NULL check before that freeing function is not needed", p)
  45. @script:python depends on report@
  46. p << r.p;
  47. @@
  48. msg = "WARNING: NULL check before some freeing functions is not needed."
  49. coccilib.report.print_report(p[0], msg)