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

memdup.cocci (1367B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2/// Use kmemdup rather than duplicating its implementation
      3///
      4// Confidence: High
      5// Copyright: (C) 2010-2012 Nicolas Palix.
      6// Copyright: (C) 2010-2012 Julia Lawall, INRIA/LIP6.
      7// Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6.
      8// URL: http://coccinelle.lip6.fr/
      9// Comments:
     10// Options: --no-includes --include-headers
     11
     12virtual patch
     13virtual context
     14virtual org
     15virtual report
     16
     17@r1@
     18expression from,to;
     19expression flag;
     20position p;
     21@@
     22
     23   to = \(kmalloc@p\|kzalloc@p\)(strlen(from) + 1,flag);
     24
     25@r2@
     26expression x,from,to;
     27expression flag,E1;
     28position p;
     29@@
     30
     31    x = strlen(from) + 1;
     32    ... when != \( x = E1 \| from = E1 \)
     33    to = \(kmalloc@p\|kzalloc@p\)(x,flag);
     34
     35@depends on patch@
     36expression from,to,size,flag;
     37position p != {r1.p,r2.p};
     38statement S;
     39@@
     40
     41-  to = \(kmalloc@p\|kzalloc@p\)(size,flag);
     42+  to = kmemdup(from,size,flag);
     43   if (to==NULL || ...) S
     44-  memcpy(to, from, size);
     45
     46@r depends on !patch@
     47expression from,to,size,flag;
     48position p != {r1.p,r2.p};
     49statement S;
     50@@
     51
     52*  to = \(kmalloc@p\|kzalloc@p\)(size,flag);
     53   if (to==NULL || ...) S
     54*  memcpy(to, from, size);
     55
     56@script:python depends on org@
     57p << r.p;
     58@@
     59
     60coccilib.org.print_todo(p[0], "WARNING opportunity for kmemdup")
     61
     62@script:python depends on report@
     63p << r.p;
     64@@
     65
     66coccilib.report.print_report(p[0], "WARNING opportunity for kmemdup")