1 // SPDX-License-Identifier: GPL-2.0-only 1 // SPDX-License-Identifier: GPL-2.0-only 2 /// 2 /// 3 /// Use zeroing allocator rather than allocato 3 /// Use zeroing allocator rather than allocator followed by memset with 0 4 /// 4 /// 5 /// This considers some simple cases that are 5 /// This considers some simple cases that are common and easy to validate 6 /// Note in particular that there are no ...s 6 /// Note in particular that there are no ...s in the rule, so all of the 7 /// matched code has to be contiguous 7 /// matched code has to be contiguous 8 /// 8 /// 9 // Confidence: High 9 // Confidence: High 10 // Copyright: (C) 2009-2010 Julia Lawall, Nico 10 // Copyright: (C) 2009-2010 Julia Lawall, Nicolas Palix, DIKU. 11 // Copyright: (C) 2009-2010 Gilles Muller, INR 11 // Copyright: (C) 2009-2010 Gilles Muller, INRIA/LiP6. 12 // Copyright: (C) 2017 Himanshu Jha 12 // Copyright: (C) 2017 Himanshu Jha 13 // URL: https://coccinelle.gitlabpages.inria.f 13 // URL: https://coccinelle.gitlabpages.inria.fr/website 14 // Options: --no-includes --include-headers 14 // Options: --no-includes --include-headers 15 // 15 // 16 // Keywords: kmalloc, kzalloc 16 // Keywords: kmalloc, kzalloc 17 // Version min: < 2.6.12 kmalloc 17 // Version min: < 2.6.12 kmalloc 18 // Version min: 2.6.14 kzalloc 18 // Version min: 2.6.14 kzalloc 19 // 19 // 20 20 21 virtual context 21 virtual context 22 virtual patch 22 virtual patch 23 virtual org 23 virtual org 24 virtual report 24 virtual report 25 25 26 //-------------------------------------------- 26 //---------------------------------------------------------- 27 // For context mode 27 // For context mode 28 //-------------------------------------------- 28 //---------------------------------------------------------- 29 29 30 @depends on context@ 30 @depends on context@ 31 type T, T2; 31 type T, T2; 32 expression x; 32 expression x; 33 expression E1; 33 expression E1; 34 statement S; 34 statement S; 35 @@ 35 @@ 36 36 37 * x = (T)\(kmalloc(E1, ...)\|vmalloc(E1)\|dma_ 37 * x = (T)\(kmalloc(E1, ...)\|vmalloc(E1)\|dma_alloc_coherent(...,E1,...)\| 38 kmalloc_node(E1, ...)\|kmem_cache_alloc(...) 38 kmalloc_node(E1, ...)\|kmem_cache_alloc(...)\|kmem_alloc(E1, ...)\| 39 devm_kmalloc(...,E1,...)\|kvmalloc(E1, ...)\ 39 devm_kmalloc(...,E1,...)\|kvmalloc(E1, ...)\|kvmalloc_node(E1,...)\); 40 if ((x==NULL) || ...) S 40 if ((x==NULL) || ...) S 41 * memset((T2)x,0,E1); 41 * memset((T2)x,0,E1); 42 42 43 //-------------------------------------------- 43 //---------------------------------------------------------- 44 // For patch mode 44 // For patch mode 45 //-------------------------------------------- 45 //---------------------------------------------------------- 46 46 47 @depends on patch@ 47 @depends on patch@ 48 type T, T2; 48 type T, T2; 49 expression x; 49 expression x; 50 expression E1,E2,E3,E4; 50 expression E1,E2,E3,E4; 51 statement S; 51 statement S; 52 @@ 52 @@ 53 53 54 ( 54 ( 55 - x = kmalloc(E1,E2); 55 - x = kmalloc(E1,E2); 56 + x = kzalloc(E1,E2); 56 + x = kzalloc(E1,E2); 57 | 57 | 58 - x = (T *)kmalloc(E1,E2); 58 - x = (T *)kmalloc(E1,E2); 59 + x = kzalloc(E1,E2); 59 + x = kzalloc(E1,E2); 60 | 60 | 61 - x = (T)kmalloc(E1,E2); 61 - x = (T)kmalloc(E1,E2); 62 + x = (T)kzalloc(E1,E2); 62 + x = (T)kzalloc(E1,E2); 63 | 63 | 64 - x = vmalloc(E1); 64 - x = vmalloc(E1); 65 + x = vzalloc(E1); 65 + x = vzalloc(E1); 66 | 66 | 67 - x = (T *)vmalloc(E1); 67 - x = (T *)vmalloc(E1); 68 + x = vzalloc(E1); 68 + x = vzalloc(E1); 69 | 69 | 70 - x = (T)vmalloc(E1); 70 - x = (T)vmalloc(E1); 71 + x = (T)vzalloc(E1); 71 + x = (T)vzalloc(E1); 72 | 72 | 73 - x = kmalloc_node(E1,E2,E3); 73 - x = kmalloc_node(E1,E2,E3); 74 + x = kzalloc_node(E1,E2,E3); 74 + x = kzalloc_node(E1,E2,E3); 75 | 75 | 76 - x = (T *)kmalloc_node(E1,E2,E3); 76 - x = (T *)kmalloc_node(E1,E2,E3); 77 + x = kzalloc_node(E1,E2,E3); 77 + x = kzalloc_node(E1,E2,E3); 78 | 78 | 79 - x = (T)kmalloc_node(E1,E2,E3); 79 - x = (T)kmalloc_node(E1,E2,E3); 80 + x = (T)kzalloc_node(E1,E2,E3); 80 + x = (T)kzalloc_node(E1,E2,E3); 81 | 81 | 82 - x = kmem_cache_alloc(E3,E4); 82 - x = kmem_cache_alloc(E3,E4); 83 + x = kmem_cache_zalloc(E3,E4); 83 + x = kmem_cache_zalloc(E3,E4); 84 | 84 | 85 - x = (T *)kmem_cache_alloc(E3,E4); 85 - x = (T *)kmem_cache_alloc(E3,E4); 86 + x = kmem_cache_zalloc(E3,E4); 86 + x = kmem_cache_zalloc(E3,E4); 87 | 87 | 88 - x = (T)kmem_cache_alloc(E3,E4); 88 - x = (T)kmem_cache_alloc(E3,E4); 89 + x = (T)kmem_cache_zalloc(E3,E4); 89 + x = (T)kmem_cache_zalloc(E3,E4); 90 | 90 | 91 - x = kmem_alloc(E1,E2); 91 - x = kmem_alloc(E1,E2); 92 + x = kmem_zalloc(E1,E2); 92 + x = kmem_zalloc(E1,E2); 93 | 93 | 94 - x = (T *)kmem_alloc(E1,E2); 94 - x = (T *)kmem_alloc(E1,E2); 95 + x = kmem_zalloc(E1,E2); 95 + x = kmem_zalloc(E1,E2); 96 | 96 | 97 - x = (T)kmem_alloc(E1,E2); 97 - x = (T)kmem_alloc(E1,E2); 98 + x = (T)kmem_zalloc(E1,E2); 98 + x = (T)kmem_zalloc(E1,E2); 99 | 99 | 100 - x = devm_kmalloc(E2,E1,E3); 100 - x = devm_kmalloc(E2,E1,E3); 101 + x = devm_kzalloc(E2,E1,E3); 101 + x = devm_kzalloc(E2,E1,E3); 102 | 102 | 103 - x = (T *)devm_kmalloc(E2,E1,E3); 103 - x = (T *)devm_kmalloc(E2,E1,E3); 104 + x = devm_kzalloc(E2,E1,E3); 104 + x = devm_kzalloc(E2,E1,E3); 105 | 105 | 106 - x = (T)devm_kmalloc(E2,E1,E3); 106 - x = (T)devm_kmalloc(E2,E1,E3); 107 + x = (T)devm_kzalloc(E2,E1,E3); 107 + x = (T)devm_kzalloc(E2,E1,E3); 108 | 108 | 109 - x = kvmalloc(E1,E2); 109 - x = kvmalloc(E1,E2); 110 + x = kvzalloc(E1,E2); 110 + x = kvzalloc(E1,E2); 111 | 111 | 112 - x = (T *)kvmalloc(E1,E2); 112 - x = (T *)kvmalloc(E1,E2); 113 + x = kvzalloc(E1,E2); 113 + x = kvzalloc(E1,E2); 114 | 114 | 115 - x = (T)kvmalloc(E1,E2); 115 - x = (T)kvmalloc(E1,E2); 116 + x = (T)kvzalloc(E1,E2); 116 + x = (T)kvzalloc(E1,E2); 117 | 117 | 118 - x = kvmalloc_node(E1,E2,E3); 118 - x = kvmalloc_node(E1,E2,E3); 119 + x = kvzalloc_node(E1,E2,E3); 119 + x = kvzalloc_node(E1,E2,E3); 120 | 120 | 121 - x = (T *)kvmalloc_node(E1,E2,E3); 121 - x = (T *)kvmalloc_node(E1,E2,E3); 122 + x = kvzalloc_node(E1,E2,E3); 122 + x = kvzalloc_node(E1,E2,E3); 123 | 123 | 124 - x = (T)kvmalloc_node(E1,E2,E3); 124 - x = (T)kvmalloc_node(E1,E2,E3); 125 + x = (T)kvzalloc_node(E1,E2,E3); 125 + x = (T)kvzalloc_node(E1,E2,E3); 126 ) 126 ) 127 if ((x==NULL) || ...) S 127 if ((x==NULL) || ...) S 128 - memset((T2)x,0,E1); 128 - memset((T2)x,0,E1); 129 129 130 @depends on patch@ 130 @depends on patch@ 131 type T, T2; 131 type T, T2; 132 expression x; 132 expression x; 133 expression E1,E2,E3,E4; 133 expression E1,E2,E3,E4; 134 statement S; 134 statement S; 135 @@ 135 @@ 136 x = (T)dma_alloc_coherent(E1, E2, E3, E4); 136 x = (T)dma_alloc_coherent(E1, E2, E3, E4); 137 if ((x==NULL) || ...) S 137 if ((x==NULL) || ...) S 138 - memset((T2)x, 0, E2); 138 - memset((T2)x, 0, E2); 139 139 140 //-------------------------------------------- 140 //---------------------------------------------------------- 141 // For org mode 141 // For org mode 142 //-------------------------------------------- 142 //---------------------------------------------------------- 143 143 144 @r depends on org || report@ 144 @r depends on org || report@ 145 type T, T2; 145 type T, T2; 146 expression x; 146 expression x; 147 expression E1,E2; 147 expression E1,E2; 148 statement S; 148 statement S; 149 position p; 149 position p; 150 @@ 150 @@ 151 151 152 x = (T)kmalloc@p(E1,E2); 152 x = (T)kmalloc@p(E1,E2); 153 if ((x==NULL) || ...) S 153 if ((x==NULL) || ...) S 154 memset((T2)x,0,E1); 154 memset((T2)x,0,E1); 155 155 156 @script:python depends on org@ 156 @script:python depends on org@ 157 p << r.p; 157 p << r.p; 158 x << r.x; 158 x << r.x; 159 @@ 159 @@ 160 160 161 msg="%s" % (x) 161 msg="%s" % (x) 162 msg_safe=msg.replace("[","@(").replace("]",")" 162 msg_safe=msg.replace("[","@(").replace("]",")") 163 coccilib.org.print_todo(p[0], msg_safe) 163 coccilib.org.print_todo(p[0], msg_safe) 164 164 165 @script:python depends on report@ 165 @script:python depends on report@ 166 p << r.p; 166 p << r.p; 167 x << r.x; 167 x << r.x; 168 @@ 168 @@ 169 169 170 msg="WARNING: kzalloc should be used for %s, i 170 msg="WARNING: kzalloc should be used for %s, instead of kmalloc/memset" % (x) 171 coccilib.report.print_report(p[0], msg) 171 coccilib.report.print_report(p[0], msg) 172 172 173 //-------------------------------------------- 173 //----------------------------------------------------------------- 174 @r1 depends on org || report@ 174 @r1 depends on org || report@ 175 type T, T2; 175 type T, T2; 176 expression x; 176 expression x; 177 expression E1; 177 expression E1; 178 statement S; 178 statement S; 179 position p; 179 position p; 180 @@ 180 @@ 181 181 182 x = (T)vmalloc@p(E1); 182 x = (T)vmalloc@p(E1); 183 if ((x==NULL) || ...) S 183 if ((x==NULL) || ...) S 184 memset((T2)x,0,E1); 184 memset((T2)x,0,E1); 185 185 186 @script:python depends on org@ 186 @script:python depends on org@ 187 p << r1.p; 187 p << r1.p; 188 x << r1.x; 188 x << r1.x; 189 @@ 189 @@ 190 190 191 msg="%s" % (x) 191 msg="%s" % (x) 192 msg_safe=msg.replace("[","@(").replace("]",")" 192 msg_safe=msg.replace("[","@(").replace("]",")") 193 coccilib.org.print_todo(p[0], msg_safe) 193 coccilib.org.print_todo(p[0], msg_safe) 194 194 195 @script:python depends on report@ 195 @script:python depends on report@ 196 p << r1.p; 196 p << r1.p; 197 x << r1.x; 197 x << r1.x; 198 @@ 198 @@ 199 199 200 msg="WARNING: vzalloc should be used for %s, i 200 msg="WARNING: vzalloc should be used for %s, instead of vmalloc/memset" % (x) 201 coccilib.report.print_report(p[0], msg) 201 coccilib.report.print_report(p[0], msg) 202 202 203 //-------------------------------------------- 203 //----------------------------------------------------------------- 204 @r2 depends on org || report@ 204 @r2 depends on org || report@ 205 type T, T2; 205 type T, T2; 206 expression x; 206 expression x; 207 expression E1,E2,E3,E4; 207 expression E1,E2,E3,E4; 208 statement S; 208 statement S; 209 position p; 209 position p; 210 @@ 210 @@ 211 211 212 x = (T)dma_alloc_coherent@p(E1,E2,E3,E4); 212 x = (T)dma_alloc_coherent@p(E1,E2,E3,E4); 213 if ((x==NULL) || ...) S 213 if ((x==NULL) || ...) S 214 memset((T2)x,0,E2); 214 memset((T2)x,0,E2); 215 215 216 @script:python depends on org@ 216 @script:python depends on org@ 217 p << r2.p; 217 p << r2.p; 218 x << r2.x; 218 x << r2.x; 219 @@ 219 @@ 220 220 221 msg="%s" % (x) 221 msg="%s" % (x) 222 msg_safe=msg.replace("[","@(").replace("]",")" 222 msg_safe=msg.replace("[","@(").replace("]",")") 223 coccilib.org.print_todo(p[0], msg_safe) 223 coccilib.org.print_todo(p[0], msg_safe) 224 224 225 @script:python depends on report@ 225 @script:python depends on report@ 226 p << r2.p; 226 p << r2.p; 227 x << r2.x; 227 x << r2.x; 228 @@ 228 @@ 229 229 230 msg="WARNING: dma_alloc_coherent used in %s al 230 msg="WARNING: dma_alloc_coherent used in %s already zeroes out memory, so memset is not needed" % (x) 231 coccilib.report.print_report(p[0], msg) 231 coccilib.report.print_report(p[0], msg) 232 232 233 //-------------------------------------------- 233 //----------------------------------------------------------------- 234 @r3 depends on org || report@ 234 @r3 depends on org || report@ 235 type T, T2; 235 type T, T2; 236 expression x; 236 expression x; 237 expression E1,E2,E3; 237 expression E1,E2,E3; 238 statement S; 238 statement S; 239 position p; 239 position p; 240 @@ 240 @@ 241 241 242 x = (T)kmalloc_node@p(E1,E2,E3); 242 x = (T)kmalloc_node@p(E1,E2,E3); 243 if ((x==NULL) || ...) S 243 if ((x==NULL) || ...) S 244 memset((T2)x,0,E1); 244 memset((T2)x,0,E1); 245 245 246 @script:python depends on org@ 246 @script:python depends on org@ 247 p << r3.p; 247 p << r3.p; 248 x << r3.x; 248 x << r3.x; 249 @@ 249 @@ 250 250 251 msg="%s" % (x) 251 msg="%s" % (x) 252 msg_safe=msg.replace("[","@(").replace("]",")" 252 msg_safe=msg.replace("[","@(").replace("]",")") 253 coccilib.org.print_todo(p[0], msg_safe) 253 coccilib.org.print_todo(p[0], msg_safe) 254 254 255 @script:python depends on report@ 255 @script:python depends on report@ 256 p << r3.p; 256 p << r3.p; 257 x << r3.x; 257 x << r3.x; 258 @@ 258 @@ 259 259 260 msg="WARNING: kzalloc_node should be used for 260 msg="WARNING: kzalloc_node should be used for %s, instead of kmalloc_node/memset" % (x) 261 coccilib.report.print_report(p[0], msg) 261 coccilib.report.print_report(p[0], msg) 262 262 263 //-------------------------------------------- 263 //----------------------------------------------------------------- 264 @r4 depends on org || report@ 264 @r4 depends on org || report@ 265 type T, T2; 265 type T, T2; 266 expression x; 266 expression x; 267 expression E1,E2,E3; 267 expression E1,E2,E3; 268 statement S; 268 statement S; 269 position p; 269 position p; 270 @@ 270 @@ 271 271 272 x = (T)kmem_cache_alloc@p(E2,E3); 272 x = (T)kmem_cache_alloc@p(E2,E3); 273 if ((x==NULL) || ...) S 273 if ((x==NULL) || ...) S 274 memset((T2)x,0,E1); 274 memset((T2)x,0,E1); 275 275 276 @script:python depends on org@ 276 @script:python depends on org@ 277 p << r4.p; 277 p << r4.p; 278 x << r4.x; 278 x << r4.x; 279 @@ 279 @@ 280 280 281 msg="%s" % (x) 281 msg="%s" % (x) 282 msg_safe=msg.replace("[","@(").replace("]",")" 282 msg_safe=msg.replace("[","@(").replace("]",")") 283 coccilib.org.print_todo(p[0], msg_safe) 283 coccilib.org.print_todo(p[0], msg_safe) 284 284 285 @script:python depends on report@ 285 @script:python depends on report@ 286 p << r4.p; 286 p << r4.p; 287 x << r4.x; 287 x << r4.x; 288 @@ 288 @@ 289 289 290 msg="WARNING: kmem_cache_zalloc should be used 290 msg="WARNING: kmem_cache_zalloc should be used for %s, instead of kmem_cache_alloc/memset" % (x) 291 coccilib.report.print_report(p[0], msg) 291 coccilib.report.print_report(p[0], msg) 292 292 293 //-------------------------------------------- 293 //----------------------------------------------------------------- 294 @r5 depends on org || report@ 294 @r5 depends on org || report@ 295 type T, T2; 295 type T, T2; 296 expression x; 296 expression x; 297 expression E1,E2; 297 expression E1,E2; 298 statement S; 298 statement S; 299 position p; 299 position p; 300 @@ 300 @@ 301 301 302 x = (T)kmem_alloc@p(E1,E2); 302 x = (T)kmem_alloc@p(E1,E2); 303 if ((x==NULL) || ...) S 303 if ((x==NULL) || ...) S 304 memset((T2)x,0,E1); 304 memset((T2)x,0,E1); 305 305 306 @script:python depends on org@ 306 @script:python depends on org@ 307 p << r5.p; 307 p << r5.p; 308 x << r5.x; 308 x << r5.x; 309 @@ 309 @@ 310 310 311 msg="%s" % (x) 311 msg="%s" % (x) 312 msg_safe=msg.replace("[","@(").replace("]",")" 312 msg_safe=msg.replace("[","@(").replace("]",")") 313 coccilib.org.print_todo(p[0], msg_safe) 313 coccilib.org.print_todo(p[0], msg_safe) 314 314 315 @script:python depends on report@ 315 @script:python depends on report@ 316 p << r5.p; 316 p << r5.p; 317 x << r5.x; 317 x << r5.x; 318 @@ 318 @@ 319 319 320 msg="WARNING: kmem_zalloc should be used for % 320 msg="WARNING: kmem_zalloc should be used for %s, instead of kmem_alloc/memset" % (x) 321 coccilib.report.print_report(p[0], msg) 321 coccilib.report.print_report(p[0], msg) 322 322 323 //-------------------------------------------- 323 //----------------------------------------------------------------- 324 @r6 depends on org || report@ 324 @r6 depends on org || report@ 325 type T, T2; 325 type T, T2; 326 expression x; 326 expression x; 327 expression E1,E2,E3; 327 expression E1,E2,E3; 328 statement S; 328 statement S; 329 position p; 329 position p; 330 @@ 330 @@ 331 331 332 x = (T)devm_kmalloc@p(E2,E1,E3); 332 x = (T)devm_kmalloc@p(E2,E1,E3); 333 if ((x==NULL) || ...) S 333 if ((x==NULL) || ...) S 334 memset((T2)x,0,E1); 334 memset((T2)x,0,E1); 335 335 336 @script:python depends on org@ 336 @script:python depends on org@ 337 p << r6.p; 337 p << r6.p; 338 x << r6.x; 338 x << r6.x; 339 @@ 339 @@ 340 340 341 msg="%s" % (x) 341 msg="%s" % (x) 342 msg_safe=msg.replace("[","@(").replace("]",")" 342 msg_safe=msg.replace("[","@(").replace("]",")") 343 coccilib.org.print_todo(p[0], msg_safe) 343 coccilib.org.print_todo(p[0], msg_safe) 344 344 345 @script:python depends on report@ 345 @script:python depends on report@ 346 p << r6.p; 346 p << r6.p; 347 x << r6.x; 347 x << r6.x; 348 @@ 348 @@ 349 349 350 msg="WARNING: devm_kzalloc should be used for 350 msg="WARNING: devm_kzalloc should be used for %s, instead of devm_kmalloc/memset" % (x) 351 coccilib.report.print_report(p[0], msg) 351 coccilib.report.print_report(p[0], msg) 352 352 353 //-------------------------------------------- 353 //----------------------------------------------------------------- 354 @r7 depends on org || report@ 354 @r7 depends on org || report@ 355 type T, T2; 355 type T, T2; 356 expression x; 356 expression x; 357 expression E1,E2; 357 expression E1,E2; 358 statement S; 358 statement S; 359 position p; 359 position p; 360 @@ 360 @@ 361 361 362 x = (T)kvmalloc@p(E1,E2); 362 x = (T)kvmalloc@p(E1,E2); 363 if ((x==NULL) || ...) S 363 if ((x==NULL) || ...) S 364 memset((T2)x,0,E1); 364 memset((T2)x,0,E1); 365 365 366 @script:python depends on org@ 366 @script:python depends on org@ 367 p << r7.p; 367 p << r7.p; 368 x << r7.x; 368 x << r7.x; 369 @@ 369 @@ 370 370 371 msg="%s" % (x) 371 msg="%s" % (x) 372 msg_safe=msg.replace("[","@(").replace("]",")" 372 msg_safe=msg.replace("[","@(").replace("]",")") 373 coccilib.org.print_todo(p[0], msg_safe) 373 coccilib.org.print_todo(p[0], msg_safe) 374 374 375 @script:python depends on report@ 375 @script:python depends on report@ 376 p << r7.p; 376 p << r7.p; 377 x << r7.x; 377 x << r7.x; 378 @@ 378 @@ 379 379 380 msg="WARNING: kvzalloc should be used for %s, 380 msg="WARNING: kvzalloc should be used for %s, instead of kvmalloc/memset" % (x) 381 coccilib.report.print_report(p[0], msg) 381 coccilib.report.print_report(p[0], msg) 382 382 383 //-------------------------------------------- 383 //----------------------------------------------------------------- 384 @r9 depends on org || report@ 384 @r9 depends on org || report@ 385 type T, T2; 385 type T, T2; 386 expression x; 386 expression x; 387 expression E1,E2,E3; 387 expression E1,E2,E3; 388 statement S; 388 statement S; 389 position p; 389 position p; 390 @@ 390 @@ 391 391 392 x = (T)kvmalloc_node@p(E1,E2,E3); 392 x = (T)kvmalloc_node@p(E1,E2,E3); 393 if ((x==NULL) || ...) S 393 if ((x==NULL) || ...) S 394 memset((T2)x,0,E1); 394 memset((T2)x,0,E1); 395 395 396 @script:python depends on org@ 396 @script:python depends on org@ 397 p << r9.p; 397 p << r9.p; 398 x << r9.x; 398 x << r9.x; 399 @@ 399 @@ 400 400 401 msg="%s" % (x) 401 msg="%s" % (x) 402 msg_safe=msg.replace("[","@(").replace("]",")" 402 msg_safe=msg.replace("[","@(").replace("]",")") 403 coccilib.org.print_todo(p[0], msg_safe) 403 coccilib.org.print_todo(p[0], msg_safe) 404 404 405 @script:python depends on report@ 405 @script:python depends on report@ 406 p << r9.p; 406 p << r9.p; 407 x << r9.x; 407 x << r9.x; 408 @@ 408 @@ 409 409 410 msg="WARNING: kvzalloc_node should be used for 410 msg="WARNING: kvzalloc_node should be used for %s, instead of kvmalloc_node/memset" % (x) 411 coccilib.report.print_report(p[0], msg) 411 coccilib.report.print_report(p[0], msg)
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.