linux-block.git
7 weeks agocrypto: arm/blake2b - Use API partial block handling
Herbert Xu [Fri, 18 Apr 2025 02:58:45 +0000 (10:58 +0800)]
crypto: arm/blake2b - Use API partial block handling

Use the Crypto API partial block handling.

Also remove the unnecessary SIMD fallback path.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
7 weeks agocrypto: blake2b-generic - Use API partial block handling
Herbert Xu [Fri, 18 Apr 2025 02:58:43 +0000 (10:58 +0800)]
crypto: blake2b-generic - Use API partial block handling

Use the Crypto API partial block handling.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
7 weeks agocrypto: shash - Handle partial blocks in API
Herbert Xu [Fri, 18 Apr 2025 02:58:41 +0000 (10:58 +0800)]
crypto: shash - Handle partial blocks in API

Provide an option to handle the partial blocks in the shash API.
Almost every hash algorithm has a block size and are only able
to hash partial blocks on finalisation.

Rather than duplicating the partial block handling many times,
add this functionality to the shash API.

It is optional (e.g., hmac would never need this by relying on
the partial block handling of the underlying hash), and to enable
it set the bit CRYPTO_AHASH_ALG_BLOCK_ONLY.

The export format is always that of the underlying hash export,
plus the partial block buffer, followed by a single-byte for the
partial block length.

Set the bit CRYPTO_AHASH_ALG_FINAL_NONZERO to withhold an extra
byte in the partial block.  This will come in handy when this
is extended to ahash where hardware often can't deal with a
zero-length final.

It will also be used for algorithms requiring an extra block for
finalisation (e.g., cmac).

As an optimisation, set the bit CRYPTO_AHASH_ALG_FINUP_MAX if
the algorithm wishes to get as much data as possible instead of
just the last partial block.

The descriptor will be zeroed after finalisation.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
7 weeks agocrypto: engine - Realign struct crypto_engine to save 8 bytes
Thorsten Blum [Thu, 17 Apr 2025 22:36:49 +0000 (00:36 +0200)]
crypto: engine - Realign struct crypto_engine to save 8 bytes

Realign struct crypto_engine to reduce its size by 8 bytes. Total size
is now 192 bytes, allowing it to fit within 3 cachelines instead of 4.

pahole output before:

  /* size: 200, cachelines: 4, members: 17 */
  /* sum members: 183, holes: 3, sum holes: 17 */
  /* paddings: 1, sum paddings: 4 */
  /* last cacheline: 8 bytes */

and after:

  /* size: 192, cachelines: 3, members: 17 */
  /* sum members: 183, holes: 2, sum holes: 9 */
  /* paddings: 1, sum paddings: 4 */

No functional changes intended.

Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
7 weeks agoMerge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Herbert Xu [Wed, 23 Apr 2025 01:36:39 +0000 (09:36 +0800)]
Merge git://git./linux/kernel/git/herbert/crypto-2.6

Merge crypto tree to pick up scompress off-by-one patch.  The
merge resolution is non-trivial as the dst handling code has been
moved in front of the src.

7 weeks agocrypto: atmel-sha204a - Set hwrng quality to lowest possible
Marek Behún [Tue, 22 Apr 2025 09:57:18 +0000 (11:57 +0200)]
crypto: atmel-sha204a - Set hwrng quality to lowest possible

According to the review by Bill Cox [1], the Atmel SHA204A random number
generator produces random numbers with very low entropy.

Set the lowest possible entropy for this chip just to be safe.

[1] https://www.metzdowd.com/pipermail/cryptography/2014-December/023858.html

Fixes: da001fb651b00e1d ("crypto: atmel-i2c - add support for SHA204A random number generator")
Cc: <stable@vger.kernel.org>
Signed-off-by: Marek Behún <kabel@kernel.org>
Acked-by: Ard Biesheuvel <ardb@kernel.org>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
7 weeks agocrypto: scomp - Fix off-by-one bug when calculating last page
Herbert Xu [Mon, 21 Apr 2025 03:31:31 +0000 (11:31 +0800)]
crypto: scomp - Fix off-by-one bug when calculating last page

Fix off-by-one bug in the last page calculation for src and dst.

Reported-by: Nhat Pham <nphamcs@gmail.com>
Fixes: 2d3553ecb4e3 ("crypto: scomp - Remove support for some non-trivial SG lists")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
8 weeks agocrypto: lib/poly1305 - restore ability to remove modules
Eric Biggers [Fri, 18 Apr 2025 04:00:17 +0000 (21:00 -0700)]
crypto: lib/poly1305 - restore ability to remove modules

Though the module_exit functions are now no-ops, they should still be
defined, since otherwise the modules become unremovable.

Fixes: 1f81c58279c7 ("crypto: arm/poly1305 - remove redundant shash algorithm")
Fixes: f4b1a73aec5c ("crypto: arm64/poly1305 - remove redundant shash algorithm")
Fixes: 378a337ab40f ("crypto: powerpc/poly1305 - implement library instead of shash")
Fixes: 21969da642a2 ("crypto: x86/poly1305 - remove redundant shash algorithm")
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
8 weeks agocrypto: lib/chacha - restore ability to remove modules
Eric Biggers [Fri, 18 Apr 2025 03:59:09 +0000 (20:59 -0700)]
crypto: lib/chacha - restore ability to remove modules

Though the module_exit functions are now no-ops, they should still be
defined, since otherwise the modules become unremovable.

Fixes: 08820553f33a ("crypto: arm/chacha - remove the redundant skcipher algorithms")
Fixes: 8c28abede16c ("crypto: arm64/chacha - remove the skcipher algorithms")
Fixes: f7915484c020 ("crypto: powerpc/chacha - remove the skcipher algorithms")
Fixes: ceba0eda8313 ("crypto: riscv/chacha - implement library instead of skcipher")
Fixes: 632ab0978f08 ("crypto: x86/chacha - remove the skcipher algorithms")
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
8 weeks agocrypto: acomp - Add missing return statements in compress/decompress
Herbert Xu [Fri, 18 Apr 2025 02:52:34 +0000 (10:52 +0800)]
crypto: acomp - Add missing return statements in compress/decompress

The return statements were missing which causes REQ_CHAIN algorithms
to execute twice for every request.

Reported-by: Eric Biggers <ebiggers@kernel.org>
Fixes: 64929fe8c0a4 ("crypto: acomp - Remove request chaining")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
8 weeks agoRevert "crypto: testmgr - Add multibuffer acomp testing"
Herbert Xu [Sat, 12 Apr 2025 05:36:51 +0000 (13:36 +0800)]
Revert "crypto: testmgr - Add multibuffer acomp testing"

This reverts commit 99585c2192cb1ce212876e82ef01d1c98c7f4699.

Remove the acomp multibuffer tests as they are buggy.

Reported-by: Dmitry Antipov <dmantipov@yandex.ru>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agopowerpc/crc: Include uaccess.h and others
Herbert Xu [Thu, 17 Apr 2025 02:26:28 +0000 (10:26 +0800)]
powerpc/crc: Include uaccess.h and others

The powerpc crc code was relying on pagefault_disable from being
pulled in by random header files.

Fix this by explicitly including uaccess.h.  Also add other missing
header files to prevent similar problems in future.

Reported-by: Eric Biggers <ebiggers@kernel.org>
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Fixes: 7ba8df47810f ("asm-generic: Make simd.h more resilient")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: public_key - Make sig/tfm local to if clause in software_key_query
Herbert Xu [Wed, 16 Apr 2025 07:48:26 +0000 (15:48 +0800)]
crypto: public_key - Make sig/tfm local to if clause in software_key_query

The recent code changes in this function triggered a false-positive
maybe-uninitialized warning in software_key_query.  Rearrange the
code by moving the sig/tfm variables into the if clause where they
are actually used.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: deflate - Make the acomp walk atomic
Herbert Xu [Tue, 15 Apr 2025 09:23:19 +0000 (17:23 +0800)]
crypto: deflate - Make the acomp walk atomic

Add an atomic flag to the acomp walk and use that in deflate.
Due to the use of a per-cpu context, it is impossible to sleep
during the walk in deflate.

Reported-by: kernel test robot <oliver.sang@intel.com>
Closes: https://lore.kernel.org/oe-lkp/202504151654.4c3b6393-lkp@intel.com
Fixes: 08cabc7d3c86 ("crypto: deflate - Convert to acomp")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: sun8i-ss - use API helpers to setup fallback request
Ovidiu Panait [Mon, 7 Apr 2025 12:36:03 +0000 (15:36 +0300)]
crypto: sun8i-ss - use API helpers to setup fallback request

Rather than setting up the fallback request by hand, use
ahash_request_set_callback() and ahash_request_set_crypt() API helpers
to properly setup the new request.

This also ensures that the completion callback is properly passed down
to the fallback algorithm, which avoids a crash with async fallbacks.

Signed-off-by: Ovidiu Panait <ovidiu.panait.oss@gmail.com>
Tested-by: Corentin Labbe <clabbe.montjoie@gmail.com>
Acked-by: Corentin Labbe <clabbe.montjoie@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: poly1305 - remove rset and sset fields of poly1305_desc_ctx
Eric Biggers [Sun, 13 Apr 2025 04:54:21 +0000 (21:54 -0700)]
crypto: poly1305 - remove rset and sset fields of poly1305_desc_ctx

These fields are no longer needed, so remove them.

Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: x86/poly1305 - don't select CRYPTO_LIB_POLY1305_GENERIC
Eric Biggers [Sun, 13 Apr 2025 04:54:20 +0000 (21:54 -0700)]
crypto: x86/poly1305 - don't select CRYPTO_LIB_POLY1305_GENERIC

The x86 Poly1305 code never falls back to the generic code, so selecting
CRYPTO_LIB_POLY1305_GENERIC is unnecessary.

Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: x86/poly1305 - remove redundant shash algorithm
Eric Biggers [Sun, 13 Apr 2025 04:54:19 +0000 (21:54 -0700)]
crypto: x86/poly1305 - remove redundant shash algorithm

Since crypto/poly1305.c now registers a poly1305-$(ARCH) shash algorithm
that uses the architecture's Poly1305 library functions, individual
architectures no longer need to do the same.  Therefore, remove the
redundant shash algorithm from the arch-specific code and leave just the
library functions there.

Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: mips/poly1305 - remove redundant shash algorithm
Eric Biggers [Sun, 13 Apr 2025 04:54:18 +0000 (21:54 -0700)]
crypto: mips/poly1305 - remove redundant shash algorithm

Since crypto/poly1305.c now registers a poly1305-$(ARCH) shash algorithm
that uses the architecture's Poly1305 library functions, individual
architectures no longer need to do the same.  Therefore, remove the
redundant shash algorithm from the arch-specific code and leave just the
library functions there.

Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: mips/poly1305 - drop redundant dependency on CONFIG_MIPS
Eric Biggers [Sun, 13 Apr 2025 04:54:17 +0000 (21:54 -0700)]
crypto: mips/poly1305 - drop redundant dependency on CONFIG_MIPS

arch/mips/crypto/Kconfig is sourced only when CONFIG_MIPS is enabled, so
there is no need for options defined in that file to depend on it.

Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: arm64/poly1305 - remove redundant shash algorithm
Eric Biggers [Sun, 13 Apr 2025 04:54:16 +0000 (21:54 -0700)]
crypto: arm64/poly1305 - remove redundant shash algorithm

Since crypto/poly1305.c now registers a poly1305-$(ARCH) shash algorithm
that uses the architecture's Poly1305 library functions, individual
architectures no longer need to do the same.  Therefore, remove the
redundant shash algorithm from the arch-specific code and leave just the
library functions there.

Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: arm/poly1305 - remove redundant shash algorithm
Eric Biggers [Sun, 13 Apr 2025 04:54:15 +0000 (21:54 -0700)]
crypto: arm/poly1305 - remove redundant shash algorithm

Since crypto/poly1305.c now registers a poly1305-$(ARCH) shash algorithm
that uses the architecture's Poly1305 library functions, individual
architectures no longer need to do the same.  Therefore, remove the
redundant shash algorithm from the arch-specific code and leave just the
library functions there.

Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: poly1305 - centralize the shash wrappers for arch code
Eric Biggers [Sun, 13 Apr 2025 04:54:14 +0000 (21:54 -0700)]
crypto: poly1305 - centralize the shash wrappers for arch code

Following the example of the crc32, crc32c, and chacha code, make the
crypto subsystem register both generic and architecture-optimized
poly1305 shash algorithms, both implemented on top of the appropriate
library functions.  This eliminates the need for every architecture to
implement the same shash glue code.

Note that the poly1305 shash requires that the key be prepended to the
data, which differs from the library functions where the key is simply a
parameter to poly1305_init().  Previously this was handled at a fairly
low level, polluting the library code with shash-specific code.
Reorganize things so that the shash code handles this quirk itself.

Also, to register the architecture-optimized shashes only when
architecture-optimized code is actually being used, add a function
poly1305_is_arch_optimized() and make each arch implement it.  Change
each architecture's Poly1305 module_init function to arch_initcall so
that the CPU feature detection is guaranteed to run before
poly1305_is_arch_optimized() gets called by crypto/poly1305.c.  (In
cases where poly1305_is_arch_optimized() just returns true
unconditionally, using arch_initcall is not strictly needed, but it's
still good to be consistent across architectures.)

Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: powerpc/poly1305 - implement library instead of shash
Eric Biggers [Sun, 13 Apr 2025 04:54:13 +0000 (21:54 -0700)]
crypto: powerpc/poly1305 - implement library instead of shash

Currently the Power10 optimized Poly1305 is only wired up to the
crypto_shash API, which makes it unavailable to users of the library
API.  The crypto_shash API for Poly1305 is going to change to be
implemented on top of the library API, so the library API needs to be
supported.  And of course it's needed anyway to serve the library users.

Therefore, change the Power10 optimized Poly1305 code to implement the
library API instead of the crypto_shash API.

Cc: Danny Tsen <dtsen@linux.ibm.com>
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: deadcode structs from 'comp' removal
Dr. David Alan Gilbert [Sat, 12 Apr 2025 23:32:41 +0000 (00:32 +0100)]
crypto: deadcode structs from 'comp' removal

Ard's recent series of patches removing 'comp' implementations
left behind a bunch of trivial structs, remove them.

These are:
  crypto842_ctx - commit 2d985ff0072f ("crypto: 842 - drop obsolete 'comp'
implementation")
  lz4_ctx       - commit 33335afe33c9 ("crypto: lz4 - drop obsolete 'comp'
implementation")
  lz4hc_ctx     - commit dbae96559eef ("crypto: lz4hc - drop obsolete
'comp' implementation")
  lzo_ctx       - commit a3e43a25bad0 ("crypto: lzo - drop obsolete
'comp' implementation")
  lzorle_ctx    - commit d32da55c5b0c ("crypto: lzo-rle - drop obsolete
'comp' implementation")

Signed-off-by: Dr. David Alan Gilbert <linux@treblig.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: cbcmac - Set block size properly
Herbert Xu [Sat, 12 Apr 2025 10:57:36 +0000 (18:57 +0800)]
crypto: cbcmac - Set block size properly

The block size of a hash algorithm is meant to be the number of
bytes its block function can handle.  For cbcmac that should be
the block size of the underlying block cipher instead of one.

Set the block size of all cbcmac implementations accordingly.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: sm3-base - Use sm3_init
Herbert Xu [Sat, 12 Apr 2025 10:57:33 +0000 (18:57 +0800)]
crypto: sm3-base - Use sm3_init

Remove the duplicate init code and simply call sm3_init.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: lib/sm3 - Export generic block function
Herbert Xu [Sat, 12 Apr 2025 10:57:31 +0000 (18:57 +0800)]
crypto: lib/sm3 - Export generic block function

Export the generic block function so that it can be used by the
Crypto API.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: lib/sm3 - Move sm3 library into lib/crypto
Herbert Xu [Sat, 12 Apr 2025 10:57:29 +0000 (18:57 +0800)]
crypto: lib/sm3 - Move sm3 library into lib/crypto

Move the sm3 library code into lib/crypto.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: hash - Update HASH_MAX_DESCSIZE comment
Herbert Xu [Sat, 12 Apr 2025 10:57:26 +0000 (18:57 +0800)]
crypto: hash - Update HASH_MAX_DESCSIZE comment

The biggest context is not sha3_generic (356), but sha-s390 (360).

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: arm64/sha512 - Fix header inclusions
Herbert Xu [Sat, 12 Apr 2025 10:57:24 +0000 (18:57 +0800)]
crypto: arm64/sha512 - Fix header inclusions

Instead of relying on linux/module.h being included through the
header file sha512_base.h, include it directly.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: zynqmp-sha - Add locking
Herbert Xu [Sat, 12 Apr 2025 10:57:22 +0000 (18:57 +0800)]
crypto: zynqmp-sha - Add locking

The hardwrae is only capable of one hash at a time, so add a lock
to make sure that it isn't used concurrently.

Fixes: 7ecc3e34474b ("crypto: xilinx - Add Xilinx SHA3 driver")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: hash - Add HASH_REQUEST_ON_STACK
Herbert Xu [Sat, 12 Apr 2025 10:57:19 +0000 (18:57 +0800)]
crypto: hash - Add HASH_REQUEST_ON_STACK

Allow any ahash to be used with a stack request, with optional
dynamic allocation when async is needed.  The intended usage is:

HASH_REQUEST_ON_STACK(req, tfm);

...
err = crypto_ahash_digest(req);
/* The request cannot complete synchronously. */
if (err == -EAGAIN) {
/* This will not fail. */
req = HASH_REQUEST_CLONE(req, gfp);

/* Redo operation. */
err = crypto_ahash_digest(req);
}

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: shash - Remove dynamic descsize
Herbert Xu [Sat, 12 Apr 2025 10:47:47 +0000 (18:47 +0800)]
crypto: shash - Remove dynamic descsize

As all users of the dynamic descsize have been converted to use
a static one instead, remove support for dynamic descsize.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: hmac - Make descsize an algorithm attribute
Herbert Xu [Sat, 12 Apr 2025 10:47:45 +0000 (18:47 +0800)]
crypto: hmac - Make descsize an algorithm attribute

Rather than setting descsize in init_tfm, make it an algorithm
attribute and set it during instance construction.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: zynqmp-sha - Make descsize an algorithm attribute
Herbert Xu [Sat, 12 Apr 2025 10:47:42 +0000 (18:47 +0800)]
crypto: zynqmp-sha - Make descsize an algorithm attribute

Rather than setting descsize in init_tfm, set it statically and
double-check it in init_tfm.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: padlock-sha - Make descsize an algorithm attribute
Herbert Xu [Sat, 12 Apr 2025 10:47:40 +0000 (18:47 +0800)]
crypto: padlock-sha - Make descsize an algorithm attribute

Rather than setting descsize in init_tfm, set it statically and
double-check it in init_tfm.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: api - Add support for duplicating algorithms before registration
Herbert Xu [Sat, 12 Apr 2025 05:16:43 +0000 (13:16 +0800)]
crypto: api - Add support for duplicating algorithms before registration

If the bit CRYPTO_ALG_DUP_FIRST is set, an algorithm will be
duplicated by kmemdup before registration.  This is inteded for
hardware-based algorithms that may be unplugged at will.

Do not use this if the algorithm data structure is embedded in a
bigger data structure.  Perform the duplication in the driver
instead.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: skcipher - Realign struct skcipher_walk to save 8 bytes
Thorsten Blum [Fri, 11 Apr 2025 19:20:51 +0000 (21:20 +0200)]
crypto: skcipher - Realign struct skcipher_walk to save 8 bytes

Reduce skcipher_walk's struct size by 8 bytes by realigning its members.

pahole output before:

  /* size: 120, cachelines: 2, members: 13 */
  /* sum members: 108, holes: 2, sum holes: 8 */
  /* padding: 4 */
  /* last cacheline: 56 bytes */

and after:

  /* size: 112, cachelines: 2, members: 13 */
  /* padding: 4 */
  /* last cacheline: 48 bytes */

No functional changes intended.

Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: simd - Include asm/simd.h in internal/simd.h
Herbert Xu [Fri, 11 Apr 2025 07:38:50 +0000 (15:38 +0800)]
crypto: simd - Include asm/simd.h in internal/simd.h

Now that the asm/simd.h files have been made safe against double
inclusion, include it directly in internal/simd.h.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agox86: Make simd.h more resilient
Herbert Xu [Fri, 11 Apr 2025 07:38:47 +0000 (15:38 +0800)]
x86: Make simd.h more resilient

Add missing header inclusions and protect against double inclusion.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agoarm: Make simd.h more resilient
Herbert Xu [Fri, 11 Apr 2025 07:38:45 +0000 (15:38 +0800)]
arm: Make simd.h more resilient

Add missing header inclusions and protect against double inclusion.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agoasm-generic: Make simd.h more resilient
Herbert Xu [Fri, 11 Apr 2025 07:38:43 +0000 (15:38 +0800)]
asm-generic: Make simd.h more resilient

Add missing header inclusions and protect against double inclusion.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: powerpc - Include uaccess.h and others
Herbert Xu [Wed, 16 Apr 2025 07:34:59 +0000 (15:34 +0800)]
crypto: powerpc - Include uaccess.h and others

The powerpc aes/ghash code was relying on pagefault_disable from
being pulled in by random header files.

Fix this by explicitly including uaccess.h.  Also add other missing
header files to prevent similar problems in future.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agohwrng: npcm - Add struct device pointer to device context struct
Sakari Ailus [Thu, 10 Apr 2025 15:22:39 +0000 (18:22 +0300)]
hwrng: npcm - Add struct device pointer to device context struct

Add a struct device pointer field to the device's context struct. This
makes using the unsigned long priv pointer in struct hwrng unnecessary, so
remove that one as well.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agohwrng: mtk - Add struct device pointer to device context struct
Sakari Ailus [Thu, 10 Apr 2025 15:22:38 +0000 (18:22 +0300)]
hwrng: mtk - Add struct device pointer to device context struct

Add a struct device pointer field to the device's context struct. This
makes using the unsigned long priv pointer in struct hwrng unnecessary, so
remove that one as well.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agohwrng: atmel - Add struct device pointer to device context struct
Sakari Ailus [Thu, 10 Apr 2025 15:22:37 +0000 (18:22 +0300)]
hwrng: atmel - Add struct device pointer to device context struct

Add a struct device pointer field to the device's context struct. This
makes using the unsigned long priv pointer in struct hwrng unnecessary, so
remove that one as well.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: ccp - Fix __sev_snp_shutdown_locked
Ashish Kalra [Wed, 9 Apr 2025 19:34:29 +0000 (19:34 +0000)]
crypto: ccp - Fix __sev_snp_shutdown_locked

Fix smatch warning:
drivers/crypto/ccp/sev-dev.c:1755 __sev_snp_shutdown_locked()
error: uninitialized symbol 'dfflush_error'.

Fixes: 9770b428b1a2 ("crypto: ccp - Move dev_info/err messages for SEV/SNP init and shutdown")
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Closes: https://lore.kernel.org/linux-crypto/d9c2e79c-e26e-47b7-8243-ff6e7b101ec3@stanley.mountain/
Signed-off-by: Ashish Kalra <ashish.kalra@amd.com>
Acked-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: api - Allow delayed algorithm destruction
Herbert Xu [Wed, 9 Apr 2025 03:29:03 +0000 (11:29 +0800)]
crypto: api - Allow delayed algorithm destruction

The current algorithm unregistration mechanism originated from
software crypto.  The code relies on module reference counts to
stop in-use algorithms from being unregistered.  Therefore if
the unregistration function is reached, it is assumed that the
module reference count has hit zero and thus the algorithm reference
count should be exactly 1.

This is completely broken for hardware devices, which can be
unplugged at random.

Fix this by allowing algorithms to be destroyed later if a destroy
callback is provided.

Reported-by: Sean Anderson <sean.anderson@linux.dev>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: essiv - Remove unnecessary strscpy() size argument
Thorsten Blum [Tue, 8 Apr 2025 11:22:59 +0000 (13:22 +0200)]
crypto: essiv - Remove unnecessary strscpy() size argument

If the destination buffer has a fixed length, strscpy() automatically
determines its size using sizeof() when the argument is omitted. This
makes the explicit size argument unnecessary - remove it.

No functional changes intended.

Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: ecdsa - Fix NIST P521 key size reported by KEYCTL_PKEY_QUERY
Lukas Wunner [Mon, 7 Apr 2025 19:32:42 +0000 (21:32 +0200)]
crypto: ecdsa - Fix NIST P521 key size reported by KEYCTL_PKEY_QUERY

When user space issues a KEYCTL_PKEY_QUERY system call for a NIST P521
key, the key_size is incorrectly reported as 528 bits instead of 521.

That's because the key size obtained through crypto_sig_keysize() is in
bytes and software_key_query() multiplies by 8 to yield the size in bits.
The underlying assumption is that the key size is always a multiple of 8.
With the recent addition of NIST P521, that's no longer the case.

Fix by returning the key_size in bits from crypto_sig_keysize() and
adjusting the calculations in software_key_query().

The ->key_size() callbacks of sig_alg algorithms now return the size in
bits, whereas the ->digest_size() and ->max_size() callbacks return the
size in bytes.  This matches with the units in struct keyctl_pkey_query.

Fixes: a7d45ba77d3d ("crypto: ecdsa - Register NIST P521 and extend test suite")
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Ignat Korchagin <ignat@cloudflare.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: ecdsa - Fix enc/dec size reported by KEYCTL_PKEY_QUERY
Lukas Wunner [Mon, 7 Apr 2025 19:32:41 +0000 (21:32 +0200)]
crypto: ecdsa - Fix enc/dec size reported by KEYCTL_PKEY_QUERY

KEYCTL_PKEY_QUERY system calls for ecdsa keys return the key size as
max_enc_size and max_dec_size, even though such keys cannot be used for
encryption/decryption.  They're exclusively for signature generation or
verification.

Only rsa keys with pkcs1 encoding can also be used for encryption or
decryption.

Return 0 instead for ecdsa keys (as well as ecrdsa keys).

Signed-off-by: Lukas Wunner <lukas@wunner.de>
Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Ignat Korchagin <ignat@cloudflare.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: caam - Add support for i.MX8QM
Thomas Richard [Mon, 7 Apr 2025 17:33:14 +0000 (19:33 +0200)]
crypto: caam - Add support for i.MX8QM

On i.MX8QM, caam clocks are turned on automatically and Linux does not have
access to the caam controller's register page, so skip clocks
initialization.

Signed-off-by: Thomas Richard <thomas.richard@bootlin.com>
Reviewed-by: Gaurav Jain <gaurav.jain@nxp.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: tegra - use API helpers to setup fallback request
Ovidiu Panait [Mon, 7 Apr 2025 12:36:04 +0000 (15:36 +0300)]
crypto: tegra - use API helpers to setup fallback request

Rather than setting up the fallback request by hand, use
ahash_request_set_callback() and ahash_request_set_crypt() API helpers
to properly setup the new request.

Signed-off-by: Ovidiu Panait <ovidiu.panait.oss@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: rk3288 - use API helpers to setup fallback request
Ovidiu Panait [Mon, 7 Apr 2025 12:36:02 +0000 (15:36 +0300)]
crypto: rk3288 - use API helpers to setup fallback request

Rather than setting up the fallback request by hand, use
ahash_request_set_callback() and ahash_request_set_crypt() API helpers
to properly setup the new request.

This also ensures that the completion callback is properly passed down
to the fallback algorithm, which avoids a crash with async fallbacks.

Signed-off-by: Ovidiu Panait <ovidiu.panait.oss@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: img-hash - use API helpers to setup fallback request
Ovidiu Panait [Mon, 7 Apr 2025 12:36:01 +0000 (15:36 +0300)]
crypto: img-hash - use API helpers to setup fallback request

Rather than setting up the fallback request by hand, use
ahash_request_set_callback() and ahash_request_set_crypt() API helpers
to properly setup the new request.

This also ensures that the completion callback is properly passed down
to the fallback algorithm, which avoids a crash with async fallbacks.

Signed-off-by: Ovidiu Panait <ovidiu.panait.oss@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: ahash - Use cra_reqsize
Herbert Xu [Mon, 7 Apr 2025 10:21:11 +0000 (18:21 +0800)]
crypto: ahash - Use cra_reqsize

Use the common reqsize field and remove reqsize from ahash_alg.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: acomp - Remove reqsize field
Herbert Xu [Mon, 7 Apr 2025 10:21:09 +0000 (18:21 +0800)]
crypto: acomp - Remove reqsize field

Remove the type-specific reqsize field in favour of the common one.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: iaa - Use cra_reqsize for acomp
Herbert Xu [Mon, 7 Apr 2025 10:21:06 +0000 (18:21 +0800)]
crypto: iaa - Use cra_reqsize for acomp

Use the common reqsize field for acomp algorithms.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: qat - Use cra_reqsize for acomp
Herbert Xu [Mon, 7 Apr 2025 10:21:04 +0000 (18:21 +0800)]
crypto: qat - Use cra_reqsize for acomp

Use the common reqsize field for acomp algorithms.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: acomp - Use cra_reqsize
Herbert Xu [Mon, 7 Apr 2025 10:21:02 +0000 (18:21 +0800)]
crypto: acomp - Use cra_reqsize

Use the common reqsize if present.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: api - Add reqsize to crypto_alg
Herbert Xu [Mon, 7 Apr 2025 10:20:59 +0000 (18:20 +0800)]
crypto: api - Add reqsize to crypto_alg

Add a reqsize field to crypto_alg with the intention of replacing
the type-specific reqsize field currently used by ahash and acomp.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: api - Mark cra_init/cra_exit as deprecated
Herbert Xu [Mon, 7 Apr 2025 10:20:57 +0000 (18:20 +0800)]
crypto: api - Mark cra_init/cra_exit as deprecated

These functions have been obsoleted by the type-specific init/exit
functions.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: atmel - add CRYPTO_ALG_KERN_DRIVER_ONLY flag
Zixun LI [Mon, 7 Apr 2025 10:20:49 +0000 (12:20 +0200)]
crypto: atmel - add CRYPTO_ALG_KERN_DRIVER_ONLY flag

This patch introduces the CRYPTO_ALG_KERN_DRIVER_ONLY flag to the
atmel-aes, atmel-sha, and atmel-tdes drivers. This flag is set for
hardware accelerated ciphers accessible through a kernel driver only,
which is the case of these drivers.

Signed-off-by: Zixun LI <admin@hifiphile.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: ctr - Remove unnecessary header inclusions
Herbert Xu [Mon, 7 Apr 2025 10:11:33 +0000 (18:11 +0800)]
crypto: ctr - Remove unnecessary header inclusions

Now that the broken drivers have been fixed, remove the unnecessary
inclusions from crypto/ctr.h.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: s5p-sss - Add missing header inclusions
Herbert Xu [Mon, 7 Apr 2025 10:11:31 +0000 (18:11 +0800)]
crypto: s5p-sss - Add missing header inclusions

The gutting of crypto/ctr.h uncovered missing header inclusions.
Add them.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: ccp - Add missing header inclusions
Herbert Xu [Mon, 7 Apr 2025 10:11:28 +0000 (18:11 +0800)]
crypto: ccp - Add missing header inclusions

The gutting of crypto/ctr.h uncovered missing header inclusions.
Add them.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: nx - Add missing header inclusions
Herbert Xu [Mon, 7 Apr 2025 10:11:26 +0000 (18:11 +0800)]
crypto: nx - Add missing header inclusions

The gutting of crypto/ctr.h uncovered missing header inclusions.
Add them.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: acomp - Simplify folio handling
Herbert Xu [Mon, 7 Apr 2025 10:05:27 +0000 (18:05 +0800)]
crypto: acomp - Simplify folio handling

Rather than storing the folio as is and handling it later, convert
it to a scatterlist right away.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: acomp - Remove ACOMP_REQUEST_ALLOC
Herbert Xu [Mon, 7 Apr 2025 10:03:05 +0000 (18:03 +0800)]
crypto: acomp - Remove ACOMP_REQUEST_ALLOC

Remove ACOMP_REQUEST_ALLOC in favour of ACOMP_REQUEST_ON_STACK
with ACOMP_REQUEST_CLONE.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agoubifs: Use ACOMP_REQUEST_CLONE
Herbert Xu [Mon, 7 Apr 2025 10:03:02 +0000 (18:03 +0800)]
ubifs: Use ACOMP_REQUEST_CLONE

Switch to the new acomp API where stacks requests are used by
default and a dynamic request is only allocted when necessary.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: acomp - Add ACOMP_REQUEST_CLONE
Herbert Xu [Mon, 7 Apr 2025 10:03:00 +0000 (18:03 +0800)]
crypto: acomp - Add ACOMP_REQUEST_CLONE

Add a new helper ACOMP_REQUEST_CLONE that will transform a stack
request into a dynamically allocated one if possible, and otherwise
switch it over to the sycnrhonous fallback transform.  The intended
usage is:

ACOMP_STACK_ON_REQUEST(req, tfm);

...
err = crypto_acomp_compress(req);
/* The request cannot complete synchronously. */
if (err == -EAGAIN) {
/* This will not fail. */
req = ACOMP_REQUEST_CLONE(req, gfp);

/* Redo operation. */
err = crypto_acomp_compress(req);
}

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: iaa - Switch to ACOMP_FBREQ_ON_STACK
Herbert Xu [Mon, 7 Apr 2025 10:02:58 +0000 (18:02 +0800)]
crypto: iaa - Switch to ACOMP_FBREQ_ON_STACK

Rather than copying the request by hand, use the ACOMP_FBREQ_ON_STACK
helper to do it.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: acomp - Add ACOMP_FBREQ_ON_STACK
Herbert Xu [Mon, 7 Apr 2025 10:02:55 +0000 (18:02 +0800)]
crypto: acomp - Add ACOMP_FBREQ_ON_STACK

Add a helper to create an on-stack fallback request from a given
request.  Use this helper in acomp_do_nondma.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: acomp - Use request flag helpers and add acomp_request_flags
Herbert Xu [Mon, 7 Apr 2025 10:02:53 +0000 (18:02 +0800)]
crypto: acomp - Use request flag helpers and add acomp_request_flags

Use the newly added request flag helpers to manage the request
flags.

Also add acomp_request_flags which lets bottom-level users to
access the request flags without the bits private to the acomp
API.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: api - Add helpers to manage request flags
Herbert Xu [Mon, 7 Apr 2025 10:02:51 +0000 (18:02 +0800)]
crypto: api - Add helpers to manage request flags

Add helpers so that the ON_STACK request flag management is not
duplicated all over the place.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: x509 - Replace kmalloc() + NUL-termination with kzalloc()
Thorsten Blum [Mon, 7 Apr 2025 08:22:47 +0000 (10:22 +0200)]
crypto: x509 - Replace kmalloc() + NUL-termination with kzalloc()

Use kzalloc() to zero out the one-element array instead of using
kmalloc() followed by a manual NUL-termination.

No functional changes intended.

Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
Reviewed-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: ahash - Remove request chaining
Herbert Xu [Sat, 12 Apr 2025 05:37:00 +0000 (13:37 +0800)]
crypto: ahash - Remove request chaining

Request chaining requires the user to do too much book keeping.
Remove it from ahash.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agoRevert "crypto: tcrypt - Restore multibuffer ahash tests"
Herbert Xu [Sat, 12 Apr 2025 05:36:57 +0000 (13:36 +0800)]
Revert "crypto: tcrypt - Restore multibuffer ahash tests"

This reverts commit c664f034172705a75f3f8a0c409b9bf95b633093.

Remove the multibuffer ahash speed tests again.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: acomp - Remove request chaining
Herbert Xu [Sat, 12 Apr 2025 05:36:55 +0000 (13:36 +0800)]
crypto: acomp - Remove request chaining

Request chaining requires the user to do too much book keeping.
Remove it from acomp.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: deflate - Remove request chaining
Herbert Xu [Sat, 12 Apr 2025 05:36:53 +0000 (13:36 +0800)]
crypto: deflate - Remove request chaining

Remove request chaining support from deflate.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agoRevert "crypto: testmgr - Add multibuffer acomp testing"
Herbert Xu [Sat, 12 Apr 2025 05:36:51 +0000 (13:36 +0800)]
Revert "crypto: testmgr - Add multibuffer acomp testing"

This reverts commit 99585c2192cb1ce212876e82ef01d1c98c7f4699.

Remove the acomp multibuffer tests so that the interface can be
redesigned.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agoMerge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Herbert Xu [Sat, 12 Apr 2025 01:48:09 +0000 (09:48 +0800)]
Merge git://git./linux/kernel/git/herbert/crypto-2.6

Merge crypto tree to pick up scompress and ahash fixes.  The
scompress fix becomes mostly unnecessary as the bugs no longer
exist with the new acompress code.  However, keep the NULL assignment
in crypto_acomp_free_streams so that if the user decides to call
crypto_acomp_alloc_streams again it will work.

2 months agocrypto: ahash - Disable request chaining
Herbert Xu [Fri, 11 Apr 2025 07:14:18 +0000 (15:14 +0800)]
crypto: ahash - Disable request chaining

Disable hash request chaining in case a driver that copies an
ahash_request object by hand accidentally triggers chaining.

Reported-by: Manorit Chawdhry <m-chawdhry@ti.com>
Fixes: f2ffe5a9183d ("crypto: hash - Add request chaining API")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Tested-by: Manorit Chawdhry <m-chawdhry@ti.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: scomp - Fix wild memory accesses in scomp_free_streams
Herbert Xu [Fri, 11 Apr 2025 01:26:47 +0000 (09:26 +0800)]
crypto: scomp - Fix wild memory accesses in scomp_free_streams

In order to use scomp_free_streams to free the partially allocted
streams in the allocation error path, move the alg->stream assignment
to the beginning.  Also check for error pointers in scomp_free_streams
before freeing the ctx.

Finally set alg->stream to NULL to not break subsequent attempts
to allocate the streams.

Fixes: 3d72ad46a23a ("crypto: acomp - Move stream management into scomp layer")
Reported-by: syzkaller <syzkaller@googlegroups.com>
Co-developed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Co-developed-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: x86/chacha - Restore SSSE3 fallback path
Herbert Xu [Tue, 8 Apr 2025 02:12:20 +0000 (10:12 +0800)]
crypto: x86/chacha - Restore SSSE3 fallback path

The chacha_use_simd static branch is required for x86 machines that
lack SSSE3 support.  Restore it and the generic fallback code.

Reported-by: Eric Biggers <ebiggers@kernel.org>
Fixes: 9b4400215e0e ("crypto: x86/chacha - Remove SIMD fallback path")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agoMerge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Herbert Xu [Wed, 9 Apr 2025 13:33:40 +0000 (21:33 +0800)]
Merge git://git./linux/kernel/git/herbert/crypto-2.6

Merge crypto tree to pick up scompress and caam fixes.  The scompress
fix has a non-trivial resolution as the code in question has moved
over to acompress.

2 months agocrypto: caam/qi - Fix drv_ctx refcount bug
Herbert Xu [Tue, 8 Apr 2025 05:17:20 +0000 (13:17 +0800)]
crypto: caam/qi - Fix drv_ctx refcount bug

Ensure refcount is raised before request is enqueued since it could
be dequeued before the call returns.

Reported-by: Sean Anderson <sean.anderson@linux.dev>
Cc: <stable@vger.kernel.org>
Fixes: 11144416a755 ("crypto: caam/qi - optimize frame queue cleanup")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Reviewed-by: Horia Geantă <horia.geanta@nxp.com>
Tested-by: Sean Anderson <sean.anderson@linux.dev>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: scomp - Fix null-pointer deref when freeing streams
Herbert Xu [Tue, 8 Apr 2025 04:20:34 +0000 (12:20 +0800)]
crypto: scomp - Fix null-pointer deref when freeing streams

As the scomp streams are freed when an algorithm is unregistered,
it is possible that the algorithm has never been used at all (e.g.,
an algorithm that does not have a self-test).  So test whether the
streams exist before freeing them.

Reported-by: Sourabh Jain <sourabhjain@linux.ibm.com>
Fixes: 3d72ad46a23a ("crypto: acomp - Move stream management into scomp layer")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Tested-by: Sourabh Jain <sourabhjain@linux.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: ccp - Silence may-be-uninitialized warning in sev_ioctl_do_pdh_export
Herbert Xu [Mon, 7 Apr 2025 04:57:54 +0000 (12:57 +0800)]
crypto: ccp - Silence may-be-uninitialized warning in sev_ioctl_do_pdh_export

The recent reordering of code in sev_ioctl_do_pdh_export triggered
a false-positive may-be-uninitialized warning from gcc:

In file included from ../include/linux/sched/task.h:13,
                 from ../include/linux/sched/signal.h:9,
                 from ../include/linux/rcuwait.h:6,
                 from ../include/linux/percpu-rwsem.h:7,
                 from ../include/linux/fs.h:34,
                 from ../include/linux/compat.h:17,
                 from ../arch/x86/include/asm/ia32.h:7,
                 from ../arch/x86/include/asm/elf.h:10,
                 from ../include/linux/elf.h:6,
                 from ../include/linux/module.h:19,
                 from ../drivers/crypto/ccp/sev-dev.c:11:
In function ‘copy_to_user’,
    inlined from ‘sev_ioctl_do_pdh_export’ at ../drivers/crypto/ccp/sev-dev.c:2036:7,
    inlined from ‘sev_ioctl’ at ../drivers/crypto/ccp/sev-dev.c:2249:9:
../include/linux/uaccess.h:225:16: warning: ‘input_cert_chain_address’ may be used uninitialized [-Wmaybe-uninitialized]
  225 |         return _copy_to_user(to, from, n);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~
../drivers/crypto/ccp/sev-dev.c: In function ‘sev_ioctl’:
../drivers/crypto/ccp/sev-dev.c:1961:22: note: ‘input_cert_chain_address’ was declared here
 1961 |         void __user *input_cert_chain_address;
      |                      ^~~~~~~~~~~~~~~~~~~~~~~~

Silence it by moving the initialisation of the variables in question
prior to the NULL check.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Acked-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: sun8i-ce-hash - use API helpers to setup fallback request
Ovidiu Panait [Tue, 1 Apr 2025 19:23:21 +0000 (22:23 +0300)]
crypto: sun8i-ce-hash - use API helpers to setup fallback request

Rather than setting up the fallback request by hand, use
ahash_request_set_callback() and ahash_request_set_crypt() API helpers
to properly setup the new request.

Signed-off-by: Ovidiu Panait <ovidiu.panait.oss@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: sun8i-ce-hash - add IS_ENABLED() checks to debugfs stats
Ovidiu Panait [Tue, 1 Apr 2025 19:23:20 +0000 (22:23 +0300)]
crypto: sun8i-ce-hash - add IS_ENABLED() checks to debugfs stats

Add IS_ENABLED(CONFIG_CRYPTO_DEV_SUN8I_CE_DEBUG) checks before the
fallback counter updates to make sure the code is not included when
debugfs statistics support is not enabled.

Signed-off-by: Ovidiu Panait <ovidiu.panait.oss@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: sun8i-ce-hash - drop CONFIG_CRYPTO_DEV_SUN8I_CE_DEBUG ifdefs
Ovidiu Panait [Tue, 1 Apr 2025 19:23:19 +0000 (22:23 +0300)]
crypto: sun8i-ce-hash - drop CONFIG_CRYPTO_DEV_SUN8I_CE_DEBUG ifdefs

'struct sun8i_ce_alg_template' is always defined, even with
CONFIG_CRYPTO_DEV_SUN8I_CE_DEBUG disabled, so the ifdef guards
are not needed.

Make sure the statistics have IS_ENABLED() checks instead.

Signed-off-by: Ovidiu Panait <ovidiu.panait.oss@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: sun8i-ce-hash - factor out debugfs fallback statistics
Ovidiu Panait [Tue, 1 Apr 2025 19:23:18 +0000 (22:23 +0300)]
crypto: sun8i-ce-hash - factor out debugfs fallback statistics

In order to reduce code duplication, factor out to a separate function
the codepath that increments debugfs fallback stats.

Signed-off-by: Ovidiu Panait <ovidiu.panait.oss@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: sun8i-ce-hash - remove duplicated fallback checks
Ovidiu Panait [Tue, 1 Apr 2025 19:23:17 +0000 (22:23 +0300)]
crypto: sun8i-ce-hash - remove duplicated fallback checks

Remove duplicated fallback checks in sun8i_ce_hash_digest(). The same
checks are already done previously in sun8i_ce_hash_need_fallback().

Signed-off-by: Ovidiu Panait <ovidiu.panait.oss@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: sun8i-ce-hash - fix error handling in sun8i_ce_hash_run()
Ovidiu Panait [Tue, 1 Apr 2025 19:23:16 +0000 (22:23 +0300)]
crypto: sun8i-ce-hash - fix error handling in sun8i_ce_hash_run()

Rework error handling in sun8i_ce_hash_run() to unmap the dma buffers in
case of failure. Currently, the dma unmap functions are not called if the
function errors out at various points.

Fixes: 56f6d5aee88d1 ("crypto: sun8i-ce - support hash algorithms")
Signed-off-by: Ovidiu Panait <ovidiu.panait.oss@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: ccp - Move SEV/SNP Platform initialization to KVM
Ashish Kalra [Mon, 24 Mar 2025 21:15:47 +0000 (21:15 +0000)]
crypto: ccp - Move SEV/SNP Platform initialization to KVM

SNP initialization is forced during PSP driver probe purely because SNP
can't be initialized if VMs are running.  But the only in-tree user of
SEV/SNP functionality is KVM, and KVM depends on PSP driver for the same.
Forcing SEV/SNP initialization because a hypervisor could be running
legacy non-confidential VMs make no sense.

This patch removes SEV/SNP initialization from the PSP driver probe
time and moves the requirement to initialize SEV/SNP functionality
to KVM if it wants to use SEV/SNP.

Suggested-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Alexey Kardashevskiy <aik@amd.com>
Signed-off-by: Ashish Kalra <ashish.kalra@amd.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agoKVM: SVM: Add support to initialize SEV/SNP functionality in KVM
Ashish Kalra [Mon, 24 Mar 2025 21:15:31 +0000 (21:15 +0000)]
KVM: SVM: Add support to initialize SEV/SNP functionality in KVM

Move platform initialization of SEV/SNP from CCP driver probe time to
KVM module load time so that KVM can do SEV/SNP platform initialization
explicitly if it actually wants to use SEV/SNP functionality.

Add support for KVM to explicitly call into the CCP driver at load time
to initialize SEV/SNP. If required, this behavior can be altered with KVM
module parameters to not do SEV/SNP platform initialization at module load
time. Additionally, a corresponding SEV/SNP platform shutdown is invoked
during KVM module unload time.

Continue to support SEV deferred initialization as the user may have the
file containing SEV persistent data for SEV INIT_EX available only later
after module load/init.

Suggested-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: Ashish Kalra <ashish.kalra@amd.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: chacha - remove <crypto/internal/chacha.h>
Eric Biggers [Sat, 5 Apr 2025 18:26:09 +0000 (11:26 -0700)]
crypto: chacha - remove <crypto/internal/chacha.h>

<crypto/internal/chacha.h> is now included only by crypto/chacha.c, so
fold it into there.

Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2 months agocrypto: x86/chacha - remove the skcipher algorithms
Eric Biggers [Sat, 5 Apr 2025 18:26:08 +0000 (11:26 -0700)]
crypto: x86/chacha - remove the skcipher algorithms

Since crypto/chacha.c now registers chacha20-$(ARCH), xchacha20-$(ARCH),
and xchacha12-$(ARCH) skcipher algorithms that use the architecture's
ChaCha and HChaCha library functions, individual architectures no longer
need to do the same.  Therefore, remove the redundant skcipher
algorithms and leave just the library functions.

Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>