]>
Commit | Line | Data |
---|---|---|
7f904d7e | 1 | // SPDX-License-Identifier: GPL-2.0-only |
791dfeb4 FF |
2 | /// NULL check before some freeing functions is not needed. |
3 | /// | |
4 | /// Based on checkpatch warning | |
5 | /// "kfree(NULL) is safe this check is probably not required" | |
6 | /// and kfreeaddr.cocci by Julia Lawall. | |
7 | /// | |
7f904d7e | 8 | // Copyright: (C) 2014 Fabian Frederick. |
45715f33 FF |
9 | // Comments: - |
10 | // Options: --no-includes --include-headers | |
791dfeb4 FF |
11 | |
12 | virtual patch | |
13 | virtual org | |
14 | virtual report | |
15 | virtual context | |
16 | ||
17 | @r2 depends on patch@ | |
18 | expression E; | |
19 | @@ | |
ca047e71 | 20 | - if (E != NULL) |
791dfeb4 | 21 | ( |
ca047e71 | 22 | kfree(E); |
6dd9379e | 23 | | |
453431a5 | 24 | kfree_sensitive(E); |
791dfeb4 | 25 | | |
ca047e71 | 26 | debugfs_remove(E); |
791dfeb4 | 27 | | |
ca047e71 | 28 | debugfs_remove_recursive(E); |
791dfeb4 | 29 | | |
ca047e71 | 30 | usb_free_urb(E); |
4743775c JL |
31 | | |
32 | kmem_cache_destroy(E); | |
33 | | | |
34 | mempool_destroy(E); | |
35 | | | |
36 | dma_pool_destroy(E); | |
791dfeb4 FF |
37 | ) |
38 | ||
39 | @r depends on context || report || org @ | |
40 | expression E; | |
41 | position p; | |
42 | @@ | |
43 | ||
ca047e71 | 44 | * if (E != NULL) |
453431a5 | 45 | * \(kfree@p\|kfree_sensitive@p\|debugfs_remove@p\|debugfs_remove_recursive@p\| |
4743775c JL |
46 | * usb_free_urb@p\|kmem_cache_destroy@p\|mempool_destroy@p\| |
47 | * dma_pool_destroy@p\)(E); | |
791dfeb4 FF |
48 | |
49 | @script:python depends on org@ | |
50 | p << r.p; | |
51 | @@ | |
52 | ||
53 | cocci.print_main("NULL check before that freeing function is not needed", p) | |
54 | ||
55 | @script:python depends on report@ | |
56 | p << r.p; | |
57 | @@ | |
58 | ||
3e47599f | 59 | msg = "WARNING: NULL check before some freeing functions is not needed." |
791dfeb4 | 60 | coccilib.report.print_report(p[0], msg) |