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| 23ca047e71SJulia Lawall debugfs_remove(E); 24791dfeb4SFabian Frederick| 25ca047e71SJulia Lawall debugfs_remove_recursive(E); 26791dfeb4SFabian Frederick| 27ca047e71SJulia Lawall usb_free_urb(E); 28791dfeb4SFabian Frederick) 29791dfeb4SFabian Frederick 30791dfeb4SFabian Frederick@r depends on context || report || org @ 31791dfeb4SFabian Frederickexpression E; 32791dfeb4SFabian Frederickposition p; 33791dfeb4SFabian Frederick@@ 34791dfeb4SFabian Frederick 35ca047e71SJulia Lawall* if (E != NULL) 36ca047e71SJulia Lawall* \(kfree@p\|debugfs_remove@p\|debugfs_remove_recursive@p\|usb_free_urb@p\)(E); 37791dfeb4SFabian Frederick 38791dfeb4SFabian Frederick@script:python depends on org@ 39791dfeb4SFabian Frederickp << r.p; 40791dfeb4SFabian Frederick@@ 41791dfeb4SFabian Frederick 42791dfeb4SFabian Frederickcocci.print_main("NULL check before that freeing function is not needed", p) 43791dfeb4SFabian Frederick 44791dfeb4SFabian Frederick@script:python depends on report@ 45791dfeb4SFabian Frederickp << r.p; 46791dfeb4SFabian Frederick@@ 47791dfeb4SFabian Frederick 48791dfeb4SFabian Frederickmsg = "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." 49791dfeb4SFabian Frederickcoccilib.report.print_report(p[0], msg) 50