Skip to content
Snippets Groups Projects
  1. Aug 07, 2020
    • Waiman Long's avatar
      mm, treewide: rename kzfree() to kfree_sensitive() · 453431a5
      Waiman Long authored
      
      As said by Linus:
      
        A symmetric naming is only helpful if it implies symmetries in use.
        Otherwise it's actively misleading.
      
        In "kzalloc()", the z is meaningful and an important part of what the
        caller wants.
      
        In "kzfree()", the z is actively detrimental, because maybe in the
        future we really _might_ want to use that "memfill(0xdeadbeef)" or
        something. The "zero" part of the interface isn't even _relevant_.
      
      The main reason that kzfree() exists is to clear sensitive information
      that should not be leaked to other future users of the same memory
      objects.
      
      Rename kzfree() to kfree_sensitive() to follow the example of the recently
      added kvfree_sensitive() and make the intention of the API more explicit.
      In addition, memzero_explicit() is used to clear the memory to make sure
      that it won't get optimized away by the compiler.
      
      The renaming is done by using the command sequence:
      
        git grep -w --name-only kzfree |\
        xargs sed -i 's/kzfree/kfree_sensitive/'
      
      followed by some editing of the kfree_sensitive() kerneldoc and adding
      a kzfree backward compatibility macro in slab.h.
      
      [akpm@linux-foundation.org: fs/crypto/inline_crypt.c needs linux/slab.h]
      [akpm@linux-foundation.org: fix fs/crypto/inline_crypt.c some more]
      
      Suggested-by: default avatarJoe Perches <joe@perches.com>
      Signed-off-by: default avatarWaiman Long <longman@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Acked-by: default avatarDavid Howells <dhowells@redhat.com>
      Acked-by: default avatarMichal Hocko <mhocko@suse.com>
      Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Cc: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
      Cc: James Morris <jmorris@namei.org>
      Cc: "Serge E. Hallyn" <serge@hallyn.com>
      Cc: Joe Perches <joe@perches.com>
      Cc: Matthew Wilcox <willy@infradead.org>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Dan Carpenter <dan.carpenter@oracle.com>
      Cc: "Jason A . Donenfeld" <Jason@zx2c4.com>
      Link: http://lkml.kernel.org/r/20200616154311.12314-3-longman@redhat.com
      
      
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      453431a5
  2. Dec 22, 2017
  3. Nov 03, 2017
  4. Apr 05, 2017
    • Ondrej Mosnáček's avatar
      crypto: gf128mul - define gf128mul_x_* in gf128mul.h · acb9b159
      Ondrej Mosnáček authored
      
      The gf128mul_x_ble function is currently defined in gf128mul.c, because
      it depends on the gf128mul_table_be multiplication table.
      
      However, since the function is very small and only uses two values from
      the table, it is better for it to be defined as inline function in
      gf128mul.h. That way, the function can be inlined by the compiler for
      better performance.
      
      For consistency, the other gf128mul_x_* functions are also moved to the
      header file. In addition, the code is rewritten to be constant-time.
      
      After this change, the speed of the generic 'xts(aes)' implementation
      increased from ~225 MiB/s to ~235 MiB/s (measured using 'cryptsetup
      benchmark -c aes-xts-plain64' on an Intel system with CRYPTO_AES_X86_64
      and CRYPTO_AES_NI_INTEL disabled).
      
      Signed-off-by: default avatarOndrej Mosnacek <omosnacek@gmail.com>
      Reviewd-by: default avatarEric Biggers <ebiggers@google.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      acb9b159
  5. Mar 09, 2017
  6. Nov 17, 2016
  7. Nov 13, 2016
  8. Jul 08, 2011
  9. Mar 31, 2011
  10. Mar 04, 2009
  11. Oct 10, 2007
  12. Dec 07, 2006
    • Rik Snel's avatar
      [CRYPTO] lib: table driven multiplications in GF(2^128) · c494e070
      Rik Snel authored
      A lot of cypher modes need multiplications in GF(2^128). LRW, ABL, GCM...
      I use functions from this library in my LRW implementation and I will
      also use them in my ABL (Arbitrary Block Length, an unencumbered (correct
      me if I am wrong, wide block cipher mode).
      
      Elements of GF(2^128) must be presented as u128 *, it encourages automatic
      and proper alignment.
      
      The library contains support for two different representations of GF(2^128),
      see the comment in gf128mul.h. There different levels of optimization
      (memory/speed tradeoff).
      
      The code is based on work by Dr Brian Gladman. Notable changes:
      - deletion of two optimization modes
      - change from u32 to u64 for faster handling on 64bit machines
      - support for 'bbe' representation in addition to the, already implemented,
        'lle' representation.
      - move 'inline void' functions from header to 'static void' in the
        source file
      - update to use the linux coding style conventions
      
      The original can be found at:
      http://fp.gladman.plus.com/AES/modes.vc8.19-06-06.zip
      
      
      
      The copyright (and GPL statement) of the original author is preserved.
      
      Signed-off-by: default avatarRik Snel <rsnel@cube.dyndns.org>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      c494e070
Loading