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

pci_free_consistent.cocci (1287B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2/// Find missing pci_free_consistent for every pci_alloc_consistent.
      3///
      4// Confidence: Moderate
      5// Copyright: (C) 2013 Petr Strnad.
      6// URL: http://coccinelle.lip6.fr/
      7// Keywords: pci_free_consistent, pci_alloc_consistent
      8// Options: --no-includes --include-headers
      9
     10virtual report
     11virtual org
     12
     13@search@
     14local idexpression id;
     15expression x,y,z,e;
     16position p1,p2;
     17type T;
     18@@
     19
     20id = pci_alloc_consistent@p1(x,y,&z)
     21... when != e = id
     22if (id == NULL || ...) { ... return ...; }
     23... when != pci_free_consistent(x,y,id,z)
     24    when != if (id) { ... pci_free_consistent(x,y,id,z) ... }
     25    when != if (y) { ... pci_free_consistent(x,y,id,z) ... }
     26    when != e = (T)id
     27    when exists
     28(
     29return 0;
     30|
     31return 1;
     32|
     33return id;
     34|
     35return@p2 ...;
     36)
     37
     38@script:python depends on report@
     39p1 << search.p1;
     40p2 << search.p2;
     41@@
     42
     43msg = "ERROR: missing pci_free_consistent; pci_alloc_consistent on line %s and return without freeing on line %s" % (p1[0].line,p2[0].line)
     44coccilib.report.print_report(p2[0],msg)
     45
     46@script:python depends on org@
     47p1 << search.p1;
     48p2 << search.p2;
     49@@
     50
     51msg = "ERROR: missing pci_free_consistent; pci_alloc_consistent on line %s and return without freeing on line %s" % (p1[0].line,p2[0].line)
     52cocci.print_main(msg,p1)
     53cocci.print_secs("",p2)