1// SPDX-License-Identifier: GPL-2.0-only 2/// 3/// Use *_pool_zalloc rather than *_pool_alloc followed by memset with 0 4/// 5// Copyright: (C) 2015 Intel Corp. 6// Options: --no-includes --include-headers 7// 8// Keywords: dma_pool_zalloc, pci_pool_zalloc 9// 10 11virtual context 12virtual patch 13virtual org 14virtual report 15 16//---------------------------------------------------------- 17// For context mode 18//---------------------------------------------------------- 19 20@depends on context@ 21expression x; 22statement S; 23@@ 24 25* x = \(dma_pool_alloc\|pci_pool_alloc\)(...); 26 if ((x==NULL) || ...) S 27* memset(x,0, ...); 28 29//---------------------------------------------------------- 30// For patch mode 31//---------------------------------------------------------- 32 33@depends on patch@ 34expression x; 35expression a,b,c; 36statement S; 37@@ 38 39- x = dma_pool_alloc(a,b,c); 40+ x = dma_pool_zalloc(a,b,c); 41 if ((x==NULL) || ...) S 42- memset(x,0,...); 43 44@depends on patch@ 45expression x; 46expression a,b,c; 47statement S; 48@@ 49 50- x = pci_pool_alloc(a,b,c); 51+ x = pci_pool_zalloc(a,b,c); 52 if ((x==NULL) || ...) S 53- memset(x,0,...); 54 55//---------------------------------------------------------- 56// For org and report mode 57//---------------------------------------------------------- 58 59@r depends on org || report@ 60expression x; 61expression a,b,c; 62statement S; 63position p; 64@@ 65 66 x = @p\(dma_pool_alloc\|pci_pool_alloc\)(a,b,c); 67 if ((x==NULL) || ...) S 68 memset(x,0, ...); 69 70@script:python depends on org@ 71p << r.p; 72x << r.x; 73@@ 74 75msg="%s" % (x) 76msg_safe=msg.replace("[","@(").replace("]",")") 77coccilib.org.print_todo(p[0], msg_safe) 78 79@script:python depends on report@ 80p << r.p; 81x << r.x; 82@@ 83 84msg="WARNING: *_pool_zalloc should be used for %s, instead of *_pool_alloc/memset" % (x) 85coccilib.report.print_report(p[0], msg) 86