]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
lib/crypto: mips: Drop optimized MD5 code
authorEric Biggers <ebiggers@kernel.org>
Thu, 26 Mar 2026 20:48:24 +0000 (13:48 -0700)
committerEric Biggers <ebiggers@kernel.org>
Mon, 30 Mar 2026 19:35:05 +0000 (12:35 -0700)
MD5 is obsolete.  Continuing to maintain architecture-optimized
implementations of MD5 is unnecessary and risky.  It diverts resources
from the modern algorithms that are actually important.

While there was demand for continuing to maintain the PowerPC optimized
MD5 code to accommodate userspace programs that are misusing AF_ALG
(https://lore.kernel.org/linux-crypto/c4191597-341d-4fd7-bc3d-13daf7666c41@csgroup.eu/),
no such demand has been seen for the MIPS Cavium Octeon optimized MD5
code.  Note that this code runs on only one particular line of SoCs.

Thus, let's drop it and focus effort on the more modern SHA algorithms,
which already have optimized code for the same SoCs.

Acked-by: Ard Biesheuvel <ardb@kernel.org>
Link: https://lore.kernel.org/r/20260326204824.62010-1-ebiggers@kernel.org
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
lib/crypto/Kconfig
lib/crypto/mips/md5.h [deleted file]

index 4b6f593dc72f5e6f0b75501448891cbdaf834cbe..9f31f03062f0336ae11eccf5de03f127414bce62 100644 (file)
@@ -134,7 +134,6 @@ config CRYPTO_LIB_MD5
 config CRYPTO_LIB_MD5_ARCH
        bool
        depends on CRYPTO_LIB_MD5 && !UML
-       default y if MIPS && CPU_CAVIUM_OCTEON
        default y if PPC
        default y if SPARC64
 
diff --git a/lib/crypto/mips/md5.h b/lib/crypto/mips/md5.h
deleted file mode 100644 (file)
index e08e28a..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Cryptographic API.
- *
- * MD5 Message Digest Algorithm (RFC1321).
- *
- * Adapted for OCTEON by Aaro Koskinen <aaro.koskinen@iki.fi>.
- *
- * Based on crypto/md5.c, which is:
- *
- * Derived from cryptoapi implementation, originally based on the
- * public domain implementation written by Colin Plumb in 1993.
- *
- * Copyright (c) Cryptoapi developers.
- * Copyright (c) 2002 James Morris <jmorris@intercode.com.au>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- */
-
-#include <asm/octeon/crypto.h>
-#include <asm/octeon/octeon.h>
-
-/*
- * We pass everything as 64-bit. OCTEON can handle misaligned data.
- */
-
-static void md5_blocks(struct md5_block_state *state,
-                      const u8 *data, size_t nblocks)
-{
-       struct octeon_cop2_state cop2_state;
-       u64 *state64 = (u64 *)state;
-       unsigned long flags;
-
-       if (!octeon_has_crypto())
-               return md5_blocks_generic(state, data, nblocks);
-
-       cpu_to_le32_array(state->h, ARRAY_SIZE(state->h));
-
-       flags = octeon_crypto_enable(&cop2_state);
-       write_octeon_64bit_hash_dword(state64[0], 0);
-       write_octeon_64bit_hash_dword(state64[1], 1);
-
-       do {
-               const u64 *block = (const u64 *)data;
-
-               write_octeon_64bit_block_dword(block[0], 0);
-               write_octeon_64bit_block_dword(block[1], 1);
-               write_octeon_64bit_block_dword(block[2], 2);
-               write_octeon_64bit_block_dword(block[3], 3);
-               write_octeon_64bit_block_dword(block[4], 4);
-               write_octeon_64bit_block_dword(block[5], 5);
-               write_octeon_64bit_block_dword(block[6], 6);
-               octeon_md5_start(block[7]);
-
-               data += MD5_BLOCK_SIZE;
-       } while (--nblocks);
-
-       state64[0] = read_octeon_64bit_hash_dword(0);
-       state64[1] = read_octeon_64bit_hash_dword(1);
-       octeon_crypto_disable(&cop2_state, flags);
-
-       le32_to_cpu_array(state->h, ARRAY_SIZE(state->h));
-}