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