cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

pool_zalloc-simple.cocci (1772B)


      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)