1791dfeb4SFabian Frederick/// NULL check before some freeing functions is not needed. 2791dfeb4SFabian Frederick/// 3791dfeb4SFabian Frederick/// Based on checkpatch warning 4791dfeb4SFabian Frederick/// "kfree(NULL) is safe this check is probably not required" 5791dfeb4SFabian Frederick/// and kfreeaddr.cocci by Julia Lawall. 6791dfeb4SFabian Frederick/// 745715f33SFabian Frederick// Copyright: (C) 2014 Fabian Frederick. GPLv2. 845715f33SFabian Frederick// Comments: - 945715f33SFabian Frederick// Options: --no-includes --include-headers 10791dfeb4SFabian Frederick 11791dfeb4SFabian Frederickvirtual patch 12791dfeb4SFabian Frederickvirtual org 13791dfeb4SFabian Frederickvirtual report 14791dfeb4SFabian Frederickvirtual context 15791dfeb4SFabian Frederick 16791dfeb4SFabian Frederick@r2 depends on patch@ 17791dfeb4SFabian Frederickexpression E; 18791dfeb4SFabian Frederick@@ 19ca047e71SJulia Lawall- if (E != NULL) 20791dfeb4SFabian Frederick( 21ca047e71SJulia Lawall kfree(E); 22791dfeb4SFabian Frederick| 236dd9379eSYann Droneaud kzfree(E); 246dd9379eSYann Droneaud| 25ca047e71SJulia Lawall debugfs_remove(E); 26791dfeb4SFabian Frederick| 27ca047e71SJulia Lawall debugfs_remove_recursive(E); 28791dfeb4SFabian Frederick| 29ca047e71SJulia Lawall usb_free_urb(E); 304743775cSJulia Lawall| 314743775cSJulia Lawall kmem_cache_destroy(E); 324743775cSJulia Lawall| 334743775cSJulia Lawall mempool_destroy(E); 344743775cSJulia Lawall| 354743775cSJulia Lawall dma_pool_destroy(E); 36791dfeb4SFabian Frederick) 37791dfeb4SFabian Frederick 38791dfeb4SFabian Frederick@r depends on context || report || org @ 39791dfeb4SFabian Frederickexpression E; 40791dfeb4SFabian Frederickposition p; 41791dfeb4SFabian Frederick@@ 42791dfeb4SFabian Frederick 43ca047e71SJulia Lawall* if (E != NULL) 446dd9379eSYann Droneaud* \(kfree@p\|kzfree@p\|debugfs_remove@p\|debugfs_remove_recursive@p\| 454743775cSJulia Lawall* usb_free_urb@p\|kmem_cache_destroy@p\|mempool_destroy@p\| 464743775cSJulia Lawall* dma_pool_destroy@p\)(E); 47791dfeb4SFabian Frederick 48791dfeb4SFabian Frederick@script:python depends on org@ 49791dfeb4SFabian Frederickp << r.p; 50791dfeb4SFabian Frederick@@ 51791dfeb4SFabian Frederick 52791dfeb4SFabian Frederickcocci.print_main("NULL check before that freeing function is not needed", p) 53791dfeb4SFabian Frederick 54791dfeb4SFabian Frederick@script:python depends on report@ 55791dfeb4SFabian Frederickp << r.p; 56791dfeb4SFabian Frederick@@ 57791dfeb4SFabian Frederick 583e47599fSHimanshu Jhamsg = "WARNING: NULL check before some freeing functions is not needed." 59791dfeb4SFabian Frederickcoccilib.report.print_report(p[0], msg) 60