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

ifnullfree.cocci (1322B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2/// NULL check before some freeing functions is not needed.
      3///
      4/// Based on checkpatch warning
      5/// "kfree(NULL) is safe this check is probably not required"
      6/// and kfreeaddr.cocci by Julia Lawall.
      7///
      8// Copyright: (C) 2014 Fabian Frederick.
      9// Comments: -
     10// Options: --no-includes --include-headers
     11
     12virtual patch
     13virtual org
     14virtual report
     15virtual context
     16
     17@r2 depends on patch@
     18expression E;
     19@@
     20- if (E != NULL)
     21(
     22  kfree(E);
     23|
     24  kvfree(E);
     25|
     26  kfree_sensitive(E);
     27|
     28  kvfree_sensitive(E, ...);
     29|
     30  vfree(E);
     31|
     32  debugfs_remove(E);
     33|
     34  debugfs_remove_recursive(E);
     35|
     36  usb_free_urb(E);
     37|
     38  kmem_cache_destroy(E);
     39|
     40  mempool_destroy(E);
     41|
     42  dma_pool_destroy(E);
     43)
     44
     45@r depends on context || report || org @
     46expression E;
     47position p;
     48@@
     49
     50* if (E != NULL)
     51*	\(kfree@p\|kvfree@p\|kfree_sensitive@p\|kvfree_sensitive@p\|vfree@p\|
     52*         debugfs_remove@p\|debugfs_remove_recursive@p\|
     53*         usb_free_urb@p\|kmem_cache_destroy@p\|mempool_destroy@p\|
     54*         dma_pool_destroy@p\)(E, ...);
     55
     56@script:python depends on org@
     57p << r.p;
     58@@
     59
     60cocci.print_main("NULL check before that freeing function is not needed", p)
     61
     62@script:python depends on report@
     63p << r.p;
     64@@
     65
     66msg = "WARNING: NULL check before some freeing functions is not needed."
     67coccilib.report.print_report(p[0], msg)