]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
crypto/arm64: sha3 - Switch to 'ksimd' scoped guard API
authorArd Biesheuvel <ardb@kernel.org>
Wed, 1 Oct 2025 11:47:13 +0000 (13:47 +0200)
committerArd Biesheuvel <ardb@kernel.org>
Wed, 12 Nov 2025 08:52:02 +0000 (09:52 +0100)
Switch to the more abstract 'scoped_ksimd()' API, which will be modified
in a future patch to transparently allocate a kernel mode FP/SIMD state
buffer on the stack, so that kernel mode FP/SIMD code remains
preemptible in principe, but without the memory overhead that adds 528
bytes to the size of struct task_struct.

Reviewed-by: Eric Biggers <ebiggers@kernel.org>
Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
arch/arm64/crypto/sha3-ce-glue.c

index b4f1001046c9a19dcc7498b81670157af1d85f70..22732760edd3893cf7957d75a204910ed77f96f3 100644 (file)
@@ -46,9 +46,8 @@ static int sha3_update(struct shash_desc *desc, const u8 *data,
        do {
                int rem;
 
-               kernel_neon_begin();
-               rem = sha3_ce_transform(sctx->st, data, blocks, ds);
-               kernel_neon_end();
+               scoped_ksimd()
+                       rem = sha3_ce_transform(sctx->st, data, blocks, ds);
                data += (blocks - rem) * bs;
                blocks = rem;
        } while (blocks);
@@ -73,9 +72,8 @@ static int sha3_finup(struct shash_desc *desc, const u8 *src, unsigned int len,
        memset(block + len, 0, bs - len);
        block[bs - 1] |= 0x80;
 
-       kernel_neon_begin();
-       sha3_ce_transform(sctx->st, block, 1, ds);
-       kernel_neon_end();
+       scoped_ksimd()
+               sha3_ce_transform(sctx->st, block, 1, ds);
        memzero_explicit(block , sizeof(block));
 
        for (i = 0; i < ds / 8; i++)