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 11virtual patch 12virtual org 13virtual report 14virtual context 15 16@r2 depends on patch@ 17expression E; 18@@ 19- if (E != NULL) 20( 21 kfree(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 36@r depends on context || report || org @ 37expression E; 38position p; 39@@ 40 41* if (E != NULL) 42* \(kfree@p\|debugfs_remove@p\|debugfs_remove_recursive@p\| 43* usb_free_urb@p\|kmem_cache_destroy@p\|mempool_destroy@p\| 44* dma_pool_destroy@p\)(E); 45 46@script:python depends on org@ 47p << r.p; 48@@ 49 50cocci.print_main("NULL check before that freeing function is not needed", p) 51 52@script:python depends on report@ 53p << r.p; 54@@ 55 56msg = "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." 57coccilib.report.print_report(p[0], msg) 58