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