ifnullfree.cocci 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /// NULL check before some freeing functions is not needed.
  2. ///
  3. /// Based on checkpatch warning
  4. /// "kfree(NULL) is safe this check is probably not required"
  5. /// and kfreeaddr.cocci by Julia Lawall.
  6. ///
  7. // Copyright: (C) 2014 Fabian Frederick. GPLv2.
  8. // Comments: -
  9. // Options: --no-includes --include-headers
  10. virtual patch
  11. virtual org
  12. virtual report
  13. virtual context
  14. @r2 depends on patch@
  15. expression E;
  16. @@
  17. - if (E != NULL)
  18. (
  19. kfree(E);
  20. |
  21. kzfree(E);
  22. |
  23. debugfs_remove(E);
  24. |
  25. debugfs_remove_recursive(E);
  26. |
  27. usb_free_urb(E);
  28. |
  29. kmem_cache_destroy(E);
  30. |
  31. mempool_destroy(E);
  32. |
  33. dma_pool_destroy(E);
  34. )
  35. @r depends on context || report || org @
  36. expression E;
  37. position p;
  38. @@
  39. * if (E != NULL)
  40. * \(kfree@p\|kzfree@p\|debugfs_remove@p\|debugfs_remove_recursive@p\|
  41. * usb_free_urb@p\|kmem_cache_destroy@p\|mempool_destroy@p\|
  42. * dma_pool_destroy@p\)(E);
  43. @script:python depends on org@
  44. p << r.p;
  45. @@
  46. cocci.print_main("NULL check before that freeing function is not needed", p)
  47. @script:python depends on report@
  48. p << r.p;
  49. @@
  50. msg = "WARNING: NULL check before freeing functions like kfree, debugfs_remove, debugfs_remove_recursive or usb_free_urb is not needed. Maybe consider reorganizing relevant code to avoid passing NULL values."
  51. coccilib.report.print_report(p[0], msg)