17f904d7eSThomas Gleixner// SPDX-License-Identifier: GPL-2.0-only 2791dfeb4SFabian Frederick/// NULL check before some freeing functions is not needed. 3791dfeb4SFabian Frederick/// 4791dfeb4SFabian Frederick/// Based on checkpatch warning 5791dfeb4SFabian Frederick/// "kfree(NULL) is safe this check is probably not required" 6791dfeb4SFabian Frederick/// and kfreeaddr.cocci by Julia Lawall. 7791dfeb4SFabian Frederick/// 87f904d7eSThomas Gleixner// Copyright: (C) 2014 Fabian Frederick. 945715f33SFabian Frederick// Comments: - 1045715f33SFabian Frederick// Options: --no-includes --include-headers 11791dfeb4SFabian Frederick 12791dfeb4SFabian Frederickvirtual patch 13791dfeb4SFabian Frederickvirtual org 14791dfeb4SFabian Frederickvirtual report 15791dfeb4SFabian Frederickvirtual context 16791dfeb4SFabian Frederick 17791dfeb4SFabian Frederick@r2 depends on patch@ 18791dfeb4SFabian Frederickexpression E; 19791dfeb4SFabian Frederick@@ 20ca047e71SJulia Lawall- if (E != NULL) 21791dfeb4SFabian Frederick( 22ca047e71SJulia Lawall kfree(E); 23791dfeb4SFabian Frederick| 24453431a5SWaiman Long kfree_sensitive(E); 256dd9379eSYann Droneaud| 26ca047e71SJulia Lawall debugfs_remove(E); 27791dfeb4SFabian Frederick| 28ca047e71SJulia Lawall debugfs_remove_recursive(E); 29791dfeb4SFabian Frederick| 30ca047e71SJulia Lawall usb_free_urb(E); 314743775cSJulia Lawall| 324743775cSJulia Lawall kmem_cache_destroy(E); 334743775cSJulia Lawall| 344743775cSJulia Lawall mempool_destroy(E); 354743775cSJulia Lawall| 364743775cSJulia Lawall dma_pool_destroy(E); 37791dfeb4SFabian Frederick) 38791dfeb4SFabian Frederick 39791dfeb4SFabian Frederick@r depends on context || report || org @ 40791dfeb4SFabian Frederickexpression E; 41791dfeb4SFabian Frederickposition p; 42791dfeb4SFabian Frederick@@ 43791dfeb4SFabian Frederick 44ca047e71SJulia Lawall* if (E != NULL) 45453431a5SWaiman Long* \(kfree@p\|kfree_sensitive@p\|debugfs_remove@p\|debugfs_remove_recursive@p\| 464743775cSJulia Lawall* usb_free_urb@p\|kmem_cache_destroy@p\|mempool_destroy@p\| 474743775cSJulia Lawall* dma_pool_destroy@p\)(E); 48791dfeb4SFabian Frederick 49791dfeb4SFabian Frederick@script:python depends on org@ 50791dfeb4SFabian Frederickp << r.p; 51791dfeb4SFabian Frederick@@ 52791dfeb4SFabian Frederick 53791dfeb4SFabian Frederickcocci.print_main("NULL check before that freeing function is not needed", p) 54791dfeb4SFabian Frederick 55791dfeb4SFabian Frederick@script:python depends on report@ 56791dfeb4SFabian Frederickp << r.p; 57791dfeb4SFabian Frederick@@ 58791dfeb4SFabian Frederick 593e47599fSHimanshu Jhamsg = "WARNING: NULL check before some freeing functions is not needed." 60791dfeb4SFabian Frederickcoccilib.report.print_report(p[0], msg) 61