162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci///
362306a36Sopenharmony_ci/// Use *_pool_zalloc rather than *_pool_alloc followed by memset with 0
462306a36Sopenharmony_ci///
562306a36Sopenharmony_ci// Copyright: (C) 2015 Intel Corp.
662306a36Sopenharmony_ci// Options: --no-includes --include-headers
762306a36Sopenharmony_ci//
862306a36Sopenharmony_ci// Keywords: dma_pool_zalloc, pci_pool_zalloc
962306a36Sopenharmony_ci//
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_civirtual context
1262306a36Sopenharmony_civirtual patch
1362306a36Sopenharmony_civirtual org
1462306a36Sopenharmony_civirtual report
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci//----------------------------------------------------------
1762306a36Sopenharmony_ci//  For context mode
1862306a36Sopenharmony_ci//----------------------------------------------------------
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci@depends on context@
2162306a36Sopenharmony_ciexpression x;
2262306a36Sopenharmony_cistatement S;
2362306a36Sopenharmony_ci@@
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci* x = \(dma_pool_alloc\|pci_pool_alloc\)(...);
2662306a36Sopenharmony_ci  if ((x==NULL) || ...) S
2762306a36Sopenharmony_ci* memset(x,0, ...);
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci//----------------------------------------------------------
3062306a36Sopenharmony_ci//  For patch mode
3162306a36Sopenharmony_ci//----------------------------------------------------------
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci@depends on patch@
3462306a36Sopenharmony_ciexpression x;
3562306a36Sopenharmony_ciexpression a,b,c;
3662306a36Sopenharmony_cistatement S;
3762306a36Sopenharmony_ci@@
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci- x = dma_pool_alloc(a,b,c);
4062306a36Sopenharmony_ci+ x = dma_pool_zalloc(a,b,c);
4162306a36Sopenharmony_ci  if ((x==NULL) || ...) S
4262306a36Sopenharmony_ci- memset(x,0,...);
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci@depends on patch@
4562306a36Sopenharmony_ciexpression x;
4662306a36Sopenharmony_ciexpression a,b,c;
4762306a36Sopenharmony_cistatement S;
4862306a36Sopenharmony_ci@@
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci- x = pci_pool_alloc(a,b,c);
5162306a36Sopenharmony_ci+ x = pci_pool_zalloc(a,b,c);
5262306a36Sopenharmony_ci  if ((x==NULL) || ...) S
5362306a36Sopenharmony_ci- memset(x,0,...);
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci//----------------------------------------------------------
5662306a36Sopenharmony_ci//  For org and report mode
5762306a36Sopenharmony_ci//----------------------------------------------------------
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci@r depends on org || report@
6062306a36Sopenharmony_ciexpression x;
6162306a36Sopenharmony_ciexpression a,b,c;
6262306a36Sopenharmony_cistatement S;
6362306a36Sopenharmony_ciposition p;
6462306a36Sopenharmony_ci@@
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci x = @p\(dma_pool_alloc\|pci_pool_alloc\)(a,b,c);
6762306a36Sopenharmony_ci if ((x==NULL) || ...) S
6862306a36Sopenharmony_ci memset(x,0, ...);
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci@script:python depends on org@
7162306a36Sopenharmony_cip << r.p;
7262306a36Sopenharmony_cix << r.x;
7362306a36Sopenharmony_ci@@
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_cimsg="%s" % (x)
7662306a36Sopenharmony_cimsg_safe=msg.replace("[","@(").replace("]",")")
7762306a36Sopenharmony_cicoccilib.org.print_todo(p[0], msg_safe)
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci@script:python depends on report@
8062306a36Sopenharmony_cip << r.p;
8162306a36Sopenharmony_cix << r.x;
8262306a36Sopenharmony_ci@@
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_cimsg="WARNING: *_pool_zalloc should be used for %s, instead of *_pool_alloc/memset" % (x)
8562306a36Sopenharmony_cicoccilib.report.print_report(p[0], msg)
86