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

uninitialized_var.cocci (1629B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2///
      3/// Please, don't reintroduce uninitialized_var().
      4///
      5/// From Documentation/process/deprecated.rst,
      6/// commit 4b19bec97c88 ("docs: deprecated.rst: Add uninitialized_var()"):
      7///  For any compiler warnings about uninitialized variables, just add
      8///  an initializer. Using warning-silencing tricks is dangerous as it
      9///  papers over real bugs (or can in the future), and suppresses unrelated
     10///  compiler warnings (e.g. "unused variable"). If the compiler thinks it
     11///  is uninitialized, either simply initialize the variable or make compiler
     12///  changes. Keep in mind that in most cases, if an initialization is
     13///  obviously redundant, the compiler's dead-store elimination pass will make
     14///  sure there are no needless variable writes.
     15///
     16/// Later, commit 3942ea7a10c9 ("deprecated.rst: Remove now removed
     17/// uninitialized_var") removed this section because all initializations of
     18/// this kind were cleaned-up from the kernel. This cocci rule checks that
     19/// the macro is not explicitly or implicitly reintroduced.
     20///
     21// Confidence: High
     22// Copyright: (C) 2020 Denis Efremov ISPRAS
     23// Options: --no-includes --include-headers
     24//
     25
     26virtual context
     27virtual report
     28virtual org
     29
     30@r@
     31identifier var;
     32type T;
     33position p;
     34@@
     35
     36(
     37* T var =@p var;
     38|
     39* T var =@p *(&(var));
     40|
     41* var =@p var
     42|
     43* var =@p *(&(var))
     44)
     45
     46@script:python depends on report@
     47p << r.p;
     48@@
     49
     50coccilib.report.print_report(p[0], "WARNING this kind of initialization is deprecated")
     51
     52@script:python depends on org@
     53p << r.p;
     54@@
     55
     56coccilib.org.print_todo(p[0], "WARNING this kind of initialization is deprecated")