^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) // SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) ///
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) /// Find if/else condition with kmalloc/vmalloc calls.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) /// Suggest to use kvmalloc instead. Same for kvfree.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) ///
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) // Confidence: High
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) // Copyright: (C) 2020 Denis Efremov ISPRAS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) // Options: --no-includes --include-headers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) //
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) virtual patch
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) virtual report
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) virtual org
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) virtual context
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) @initialize:python@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) @@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) filter = frozenset(['kvfree'])
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) def relevant(p):
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) return not (filter & {el.current_element for el in p})
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) @kvmalloc depends on !patch@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) expression E, E1, size;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) identifier flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) binary operator cmp = {<=, <, ==, >, >=};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) identifier x;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) type T;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) position p;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) @@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) (
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) * if (size cmp E1 || ...)@p {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) * E = \(kmalloc\|kzalloc\|kcalloc\|kmalloc_node\|kzalloc_node\|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) * kmalloc_array\|kmalloc_array_node\|kcalloc_node\)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) * (..., size, \(flags\|GFP_KERNEL\|\(GFP_KERNEL\|flags\)|__GFP_NOWARN\), ...)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) } else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) * E = \(vmalloc\|vzalloc\|vmalloc_node\|vzalloc_node\)(..., size, ...)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) * E = \(kmalloc\|kzalloc\|kcalloc\|kmalloc_node\|kzalloc_node\|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) * kmalloc_array\|kmalloc_array_node\|kcalloc_node\)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) * (..., size, \(flags\|GFP_KERNEL\|\(GFP_KERNEL\|flags\)|__GFP_NOWARN\), ...)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) ... when != E = E1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) when != size = E1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) when any
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) * if (E == NULL)@p {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) * E = \(vmalloc\|vzalloc\|vmalloc_node\|vzalloc_node\)(..., size, ...)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) * T x = \(kmalloc\|kzalloc\|kcalloc\|kmalloc_node\|kzalloc_node\|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) * kmalloc_array\|kmalloc_array_node\|kcalloc_node\)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) * (..., size, \(flags\|GFP_KERNEL\|\(GFP_KERNEL\|flags\)|__GFP_NOWARN\), ...);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) ... when != x = E1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) when != size = E1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) when any
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) * if (x == NULL)@p {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) * x = \(vmalloc\|vzalloc\|vmalloc_node\|vzalloc_node\)(..., size, ...)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) @kvfree depends on !patch@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) expression E;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) position p : script:python() { relevant(p) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) @@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) * if (is_vmalloc_addr(E))@p {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) * vfree(E)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) } else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) ... when != krealloc(E, ...)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) when any
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) * \(kfree\|kzfree\)(E)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) @depends on patch@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) expression E, E1, size, node;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) binary operator cmp = {<=, <, ==, >, >=};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) identifier flags, x;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) type T;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) @@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) (
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) - if (size cmp E1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) - E = kmalloc(size, flags);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) - else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) - E = vmalloc(size);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) + E = kvmalloc(size, flags);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) - if (size cmp E1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) - E = kmalloc(size, \(GFP_KERNEL\|GFP_KERNEL|__GFP_NOWARN\));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) - else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) - E = vmalloc(size);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) + E = kvmalloc(size, GFP_KERNEL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) - E = kmalloc(size, flags | __GFP_NOWARN);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) - if (E == NULL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) - E = vmalloc(size);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) + E = kvmalloc(size, flags);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) - E = kmalloc(size, \(GFP_KERNEL\|GFP_KERNEL|__GFP_NOWARN\));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) - if (E == NULL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) - E = vmalloc(size);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) + E = kvmalloc(size, GFP_KERNEL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) - T x = kmalloc(size, flags | __GFP_NOWARN);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) - if (x == NULL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) - x = vmalloc(size);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) + T x = kvmalloc(size, flags);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) - T x = kmalloc(size, \(GFP_KERNEL\|GFP_KERNEL|__GFP_NOWARN\));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) - if (x == NULL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) - x = vmalloc(size);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) + T x = kvmalloc(size, GFP_KERNEL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) - if (size cmp E1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) - E = kzalloc(size, flags);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) - else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) - E = vzalloc(size);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) + E = kvzalloc(size, flags);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) - if (size cmp E1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) - E = kzalloc(size, \(GFP_KERNEL\|GFP_KERNEL|__GFP_NOWARN\));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) - else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) - E = vzalloc(size);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) + E = kvzalloc(size, GFP_KERNEL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) - E = kzalloc(size, flags | __GFP_NOWARN);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) - if (E == NULL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) - E = vzalloc(size);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) + E = kvzalloc(size, flags);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) - E = kzalloc(size, \(GFP_KERNEL\|GFP_KERNEL|__GFP_NOWARN\));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) - if (E == NULL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) - E = vzalloc(size);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) + E = kvzalloc(size, GFP_KERNEL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) - T x = kzalloc(size, flags | __GFP_NOWARN);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) - if (x == NULL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) - x = vzalloc(size);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) + T x = kvzalloc(size, flags);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) - T x = kzalloc(size, \(GFP_KERNEL\|GFP_KERNEL|__GFP_NOWARN\));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) - if (x == NULL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) - x = vzalloc(size);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) + T x = kvzalloc(size, GFP_KERNEL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) - if (size cmp E1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) - E = kmalloc_node(size, flags, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) - else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) - E = vmalloc_node(size, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) + E = kvmalloc_node(size, flags, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) - if (size cmp E1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) - E = kmalloc_node(size, \(GFP_KERNEL\|GFP_KERNEL|__GFP_NOWARN\), node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) - else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) - E = vmalloc_node(size, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) + E = kvmalloc_node(size, GFP_KERNEL, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) - E = kmalloc_node(size, flags | __GFP_NOWARN, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) - if (E == NULL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) - E = vmalloc_node(size, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) + E = kvmalloc_node(size, flags, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) - E = kmalloc_node(size, \(GFP_KERNEL\|GFP_KERNEL|__GFP_NOWARN\), node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) - if (E == NULL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) - E = vmalloc_node(size, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) + E = kvmalloc_node(size, GFP_KERNEL, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) - T x = kmalloc_node(size, flags | __GFP_NOWARN, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) - if (x == NULL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) - x = vmalloc_node(size, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) + T x = kvmalloc_node(size, flags, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) - T x = kmalloc_node(size, \(GFP_KERNEL\|GFP_KERNEL|__GFP_NOWARN\), node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) - if (x == NULL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) - x = vmalloc_node(size, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) + T x = kvmalloc_node(size, GFP_KERNEL, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) - if (size cmp E1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) - E = kvzalloc_node(size, flags, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) - else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) - E = vzalloc_node(size, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) + E = kvzalloc_node(size, flags, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) - if (size cmp E1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) - E = kvzalloc_node(size, \(GFP_KERNEL\|GFP_KERNEL|__GFP_NOWARN\), node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) - else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) - E = vzalloc_node(size, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) + E = kvzalloc_node(size, GFP_KERNEL, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) - E = kvzalloc_node(size, flags | __GFP_NOWARN, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) - if (E == NULL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) - E = vzalloc_node(size, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) + E = kvzalloc_node(size, flags, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) - E = kvzalloc_node(size, \(GFP_KERNEL\|GFP_KERNEL|__GFP_NOWARN\), node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) - if (E == NULL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) - E = vzalloc_node(size, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) + E = kvzalloc_node(size, GFP_KERNEL, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) - T x = kvzalloc_node(size, flags | __GFP_NOWARN, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) - if (x == NULL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) - x = vzalloc_node(size, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) + T x = kvzalloc_node(size, flags, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) - T x = kvzalloc_node(size, \(GFP_KERNEL\|GFP_KERNEL|__GFP_NOWARN\), node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) - if (x == NULL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) - x = vzalloc_node(size, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) + T x = kvzalloc_node(size, GFP_KERNEL, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) @depends on patch@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) expression E;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) position p : script:python() { relevant(p) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) @@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) - if (is_vmalloc_addr(E))@p
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) - vfree(E);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) - else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) - kfree(E);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) + kvfree(E);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) @script: python depends on report@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) p << kvmalloc.p;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) @@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) coccilib.report.print_report(p[0], "WARNING opportunity for kvmalloc")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) @script: python depends on org@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) p << kvmalloc.p;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) @@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) coccilib.org.print_todo(p[0], "WARNING opportunity for kvmalloc")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) @script: python depends on report@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) p << kvfree.p;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) @@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) coccilib.report.print_report(p[0], "WARNING opportunity for kvfree")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) @script: python depends on org@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) p << kvfree.p;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) @@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) coccilib.org.print_todo(p[0], "WARNING opportunity for kvfree")