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