* [PATCH] lib/crypto: Drop inline from all *_mod_init_arch() functions
@ 2025-08-16 2:04 Eric Biggers
2025-08-21 3:39 ` Eric Biggers
0 siblings, 1 reply; 2+ messages in thread
From: Eric Biggers @ 2025-08-16 2:04 UTC (permalink / raw)
To: linux-crypto
Cc: linux-kernel, Ard Biesheuvel, Jason A . Donenfeld, Eric Biggers
Drop 'inline' from all the *_mod_init_arch() functions so that the
compiler will warn about any bugs where they are unused due to not being
wired up properly. (There are no such bugs currently, so this just
establishes a more robust convention for the future. Of course, these
functions also tend to get inlined anyway, regardless of the keyword.)
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
---
lib/crypto/arm/sha1.h | 2 +-
lib/crypto/arm/sha256.h | 2 +-
lib/crypto/arm/sha512.h | 2 +-
lib/crypto/arm64/sha1.h | 2 +-
lib/crypto/arm64/sha256.h | 2 +-
lib/crypto/arm64/sha512.h | 2 +-
lib/crypto/riscv/sha256.h | 2 +-
lib/crypto/riscv/sha512.h | 2 +-
lib/crypto/s390/sha1.h | 2 +-
lib/crypto/s390/sha256.h | 2 +-
lib/crypto/s390/sha512.h | 2 +-
lib/crypto/sparc/md5.h | 2 +-
lib/crypto/sparc/sha1.h | 2 +-
lib/crypto/sparc/sha256.h | 2 +-
lib/crypto/sparc/sha512.h | 2 +-
lib/crypto/x86/sha1.h | 2 +-
lib/crypto/x86/sha256.h | 2 +-
lib/crypto/x86/sha512.h | 2 +-
18 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/lib/crypto/arm/sha1.h b/lib/crypto/arm/sha1.h
index fa1e924190006..29f8bcad0447c 100644
--- a/lib/crypto/arm/sha1.h
+++ b/lib/crypto/arm/sha1.h
@@ -33,11 +33,11 @@ static void sha1_blocks(struct sha1_block_state *state,
}
}
#ifdef CONFIG_KERNEL_MODE_NEON
#define sha1_mod_init_arch sha1_mod_init_arch
-static inline void sha1_mod_init_arch(void)
+static void sha1_mod_init_arch(void)
{
if (elf_hwcap & HWCAP_NEON) {
static_branch_enable(&have_neon);
if (elf_hwcap2 & HWCAP2_SHA1)
static_branch_enable(&have_ce);
diff --git a/lib/crypto/arm/sha256.h b/lib/crypto/arm/sha256.h
index eab713e650f33..7556457b3094b 100644
--- a/lib/crypto/arm/sha256.h
+++ b/lib/crypto/arm/sha256.h
@@ -33,11 +33,11 @@ static void sha256_blocks(struct sha256_block_state *state,
}
}
#ifdef CONFIG_KERNEL_MODE_NEON
#define sha256_mod_init_arch sha256_mod_init_arch
-static inline void sha256_mod_init_arch(void)
+static void sha256_mod_init_arch(void)
{
if (elf_hwcap & HWCAP_NEON) {
static_branch_enable(&have_neon);
if (elf_hwcap2 & HWCAP2_SHA2)
static_branch_enable(&have_ce);
diff --git a/lib/crypto/arm/sha512.h b/lib/crypto/arm/sha512.h
index cc2447acd5621..d1b485dd275db 100644
--- a/lib/crypto/arm/sha512.h
+++ b/lib/crypto/arm/sha512.h
@@ -27,11 +27,11 @@ static void sha512_blocks(struct sha512_block_state *state,
}
}
#ifdef CONFIG_KERNEL_MODE_NEON
#define sha512_mod_init_arch sha512_mod_init_arch
-static inline void sha512_mod_init_arch(void)
+static void sha512_mod_init_arch(void)
{
if (cpu_has_neon())
static_branch_enable(&have_neon);
}
#endif /* CONFIG_KERNEL_MODE_NEON */
diff --git a/lib/crypto/arm64/sha1.h b/lib/crypto/arm64/sha1.h
index f822563538cc8..aaef4ebfc5e34 100644
--- a/lib/crypto/arm64/sha1.h
+++ b/lib/crypto/arm64/sha1.h
@@ -30,10 +30,10 @@ static void sha1_blocks(struct sha1_block_state *state,
sha1_blocks_generic(state, data, nblocks);
}
}
#define sha1_mod_init_arch sha1_mod_init_arch
-static inline void sha1_mod_init_arch(void)
+static void sha1_mod_init_arch(void)
{
if (cpu_have_named_feature(SHA1))
static_branch_enable(&have_ce);
}
diff --git a/lib/crypto/arm64/sha256.h b/lib/crypto/arm64/sha256.h
index d95f1077c32bd..be4aeda9d0e6e 100644
--- a/lib/crypto/arm64/sha256.h
+++ b/lib/crypto/arm64/sha256.h
@@ -44,11 +44,11 @@ static void sha256_blocks(struct sha256_block_state *state,
}
}
#ifdef CONFIG_KERNEL_MODE_NEON
#define sha256_mod_init_arch sha256_mod_init_arch
-static inline void sha256_mod_init_arch(void)
+static void sha256_mod_init_arch(void)
{
if (cpu_have_named_feature(ASIMD)) {
static_branch_enable(&have_neon);
if (cpu_have_named_feature(SHA2))
static_branch_enable(&have_ce);
diff --git a/lib/crypto/arm64/sha512.h b/lib/crypto/arm64/sha512.h
index 7539ea3fef10d..ddb0d256f73aa 100644
--- a/lib/crypto/arm64/sha512.h
+++ b/lib/crypto/arm64/sha512.h
@@ -35,11 +35,11 @@ static void sha512_blocks(struct sha512_block_state *state,
}
}
#ifdef CONFIG_KERNEL_MODE_NEON
#define sha512_mod_init_arch sha512_mod_init_arch
-static inline void sha512_mod_init_arch(void)
+static void sha512_mod_init_arch(void)
{
if (cpu_have_named_feature(SHA512))
static_branch_enable(&have_sha512_insns);
}
#endif /* CONFIG_KERNEL_MODE_NEON */
diff --git a/lib/crypto/riscv/sha256.h b/lib/crypto/riscv/sha256.h
index f36f68d2e88cc..1def18b0a4fb5 100644
--- a/lib/crypto/riscv/sha256.h
+++ b/lib/crypto/riscv/sha256.h
@@ -29,11 +29,11 @@ static void sha256_blocks(struct sha256_block_state *state,
sha256_blocks_generic(state, data, nblocks);
}
}
#define sha256_mod_init_arch sha256_mod_init_arch
-static inline void sha256_mod_init_arch(void)
+static void sha256_mod_init_arch(void)
{
/* Both zvknha and zvknhb provide the SHA-256 instructions. */
if ((riscv_isa_extension_available(NULL, ZVKNHA) ||
riscv_isa_extension_available(NULL, ZVKNHB)) &&
riscv_isa_extension_available(NULL, ZVKB) &&
diff --git a/lib/crypto/riscv/sha512.h b/lib/crypto/riscv/sha512.h
index 59dc0294a9a7e..145bdab1214e3 100644
--- a/lib/crypto/riscv/sha512.h
+++ b/lib/crypto/riscv/sha512.h
@@ -28,11 +28,11 @@ static void sha512_blocks(struct sha512_block_state *state,
sha512_blocks_generic(state, data, nblocks);
}
}
#define sha512_mod_init_arch sha512_mod_init_arch
-static inline void sha512_mod_init_arch(void)
+static void sha512_mod_init_arch(void)
{
if (riscv_isa_extension_available(NULL, ZVKNHB) &&
riscv_isa_extension_available(NULL, ZVKB) &&
riscv_vector_vlen() >= 128)
static_branch_enable(&have_extensions);
diff --git a/lib/crypto/s390/sha1.h b/lib/crypto/s390/sha1.h
index 08bd138e881cc..73d94476a157a 100644
--- a/lib/crypto/s390/sha1.h
+++ b/lib/crypto/s390/sha1.h
@@ -18,11 +18,11 @@ static void sha1_blocks(struct sha1_block_state *state,
else
sha1_blocks_generic(state, data, nblocks);
}
#define sha1_mod_init_arch sha1_mod_init_arch
-static inline void sha1_mod_init_arch(void)
+static void sha1_mod_init_arch(void)
{
if (cpu_have_feature(S390_CPU_FEATURE_MSA) &&
cpacf_query_func(CPACF_KIMD, CPACF_KIMD_SHA_1))
static_branch_enable(&have_cpacf_sha1);
}
diff --git a/lib/crypto/s390/sha256.h b/lib/crypto/s390/sha256.h
index 70a81cbc06b2c..acd4835087897 100644
--- a/lib/crypto/s390/sha256.h
+++ b/lib/crypto/s390/sha256.h
@@ -18,11 +18,11 @@ static void sha256_blocks(struct sha256_block_state *state,
else
sha256_blocks_generic(state, data, nblocks);
}
#define sha256_mod_init_arch sha256_mod_init_arch
-static inline void sha256_mod_init_arch(void)
+static void sha256_mod_init_arch(void)
{
if (cpu_have_feature(S390_CPU_FEATURE_MSA) &&
cpacf_query_func(CPACF_KIMD, CPACF_KIMD_SHA_256))
static_branch_enable(&have_cpacf_sha256);
}
diff --git a/lib/crypto/s390/sha512.h b/lib/crypto/s390/sha512.h
index 24744651550cb..46699d43df7eb 100644
--- a/lib/crypto/s390/sha512.h
+++ b/lib/crypto/s390/sha512.h
@@ -18,11 +18,11 @@ static void sha512_blocks(struct sha512_block_state *state,
else
sha512_blocks_generic(state, data, nblocks);
}
#define sha512_mod_init_arch sha512_mod_init_arch
-static inline void sha512_mod_init_arch(void)
+static void sha512_mod_init_arch(void)
{
if (cpu_have_feature(S390_CPU_FEATURE_MSA) &&
cpacf_query_func(CPACF_KIMD, CPACF_KIMD_SHA_512))
static_branch_enable(&have_cpacf_sha512);
}
diff --git a/lib/crypto/sparc/md5.h b/lib/crypto/sparc/md5.h
index 3f1b0ed8c0b3f..3995f3e075eb6 100644
--- a/lib/crypto/sparc/md5.h
+++ b/lib/crypto/sparc/md5.h
@@ -30,11 +30,11 @@ static void md5_blocks(struct md5_block_state *state,
md5_blocks_generic(state, data, nblocks);
}
}
#define md5_mod_init_arch md5_mod_init_arch
-static inline void md5_mod_init_arch(void)
+static void md5_mod_init_arch(void)
{
unsigned long cfr;
if (!(sparc64_elf_hwcap & HWCAP_SPARC_CRYPTO))
return;
diff --git a/lib/crypto/sparc/sha1.h b/lib/crypto/sparc/sha1.h
index 5015f93584b7e..bdf771fcc1f73 100644
--- a/lib/crypto/sparc/sha1.h
+++ b/lib/crypto/sparc/sha1.h
@@ -25,11 +25,11 @@ static void sha1_blocks(struct sha1_block_state *state,
else
sha1_blocks_generic(state, data, nblocks);
}
#define sha1_mod_init_arch sha1_mod_init_arch
-static inline void sha1_mod_init_arch(void)
+static void sha1_mod_init_arch(void)
{
unsigned long cfr;
if (!(sparc64_elf_hwcap & HWCAP_SPARC_CRYPTO))
return;
diff --git a/lib/crypto/sparc/sha256.h b/lib/crypto/sparc/sha256.h
index 1d10108eb1954..b2f4419ec7781 100644
--- a/lib/crypto/sparc/sha256.h
+++ b/lib/crypto/sparc/sha256.h
@@ -25,11 +25,11 @@ static void sha256_blocks(struct sha256_block_state *state,
else
sha256_blocks_generic(state, data, nblocks);
}
#define sha256_mod_init_arch sha256_mod_init_arch
-static inline void sha256_mod_init_arch(void)
+static void sha256_mod_init_arch(void)
{
unsigned long cfr;
if (!(sparc64_elf_hwcap & HWCAP_SPARC_CRYPTO))
return;
diff --git a/lib/crypto/sparc/sha512.h b/lib/crypto/sparc/sha512.h
index 55303ab6b15f7..a8c37a7d4c393 100644
--- a/lib/crypto/sparc/sha512.h
+++ b/lib/crypto/sparc/sha512.h
@@ -24,11 +24,11 @@ static void sha512_blocks(struct sha512_block_state *state,
else
sha512_blocks_generic(state, data, nblocks);
}
#define sha512_mod_init_arch sha512_mod_init_arch
-static inline void sha512_mod_init_arch(void)
+static void sha512_mod_init_arch(void)
{
unsigned long cfr;
if (!(sparc64_elf_hwcap & HWCAP_SPARC_CRYPTO))
return;
diff --git a/lib/crypto/x86/sha1.h b/lib/crypto/x86/sha1.h
index e308379d89bcf..c48a0131fd12c 100644
--- a/lib/crypto/x86/sha1.h
+++ b/lib/crypto/x86/sha1.h
@@ -53,11 +53,11 @@ static void sha1_blocks(struct sha1_block_state *state,
{
static_call(sha1_blocks_x86)(state, data, nblocks);
}
#define sha1_mod_init_arch sha1_mod_init_arch
-static inline void sha1_mod_init_arch(void)
+static void sha1_mod_init_arch(void)
{
if (boot_cpu_has(X86_FEATURE_SHA_NI)) {
static_call_update(sha1_blocks_x86, sha1_blocks_ni);
} else if (cpu_has_xfeatures(XFEATURE_MASK_SSE | XFEATURE_MASK_YMM,
NULL) &&
diff --git a/lib/crypto/x86/sha256.h b/lib/crypto/x86/sha256.h
index c852396ef3190..41fa95fbc3bf8 100644
--- a/lib/crypto/x86/sha256.h
+++ b/lib/crypto/x86/sha256.h
@@ -34,11 +34,11 @@ static void sha256_blocks(struct sha256_block_state *state,
{
static_call(sha256_blocks_x86)(state, data, nblocks);
}
#define sha256_mod_init_arch sha256_mod_init_arch
-static inline void sha256_mod_init_arch(void)
+static void sha256_mod_init_arch(void)
{
if (boot_cpu_has(X86_FEATURE_SHA_NI)) {
static_call_update(sha256_blocks_x86, sha256_blocks_ni);
} else if (cpu_has_xfeatures(XFEATURE_MASK_SSE | XFEATURE_MASK_YMM,
NULL) &&
diff --git a/lib/crypto/x86/sha512.h b/lib/crypto/x86/sha512.h
index be2c8fc122469..0213c70cedd01 100644
--- a/lib/crypto/x86/sha512.h
+++ b/lib/crypto/x86/sha512.h
@@ -33,11 +33,11 @@ static void sha512_blocks(struct sha512_block_state *state,
{
static_call(sha512_blocks_x86)(state, data, nblocks);
}
#define sha512_mod_init_arch sha512_mod_init_arch
-static inline void sha512_mod_init_arch(void)
+static void sha512_mod_init_arch(void)
{
if (cpu_has_xfeatures(XFEATURE_MASK_SSE | XFEATURE_MASK_YMM, NULL) &&
boot_cpu_has(X86_FEATURE_AVX)) {
if (boot_cpu_has(X86_FEATURE_AVX2) &&
boot_cpu_has(X86_FEATURE_BMI2))
base-commit: 56784a42208677e6fb24ba0bd93a2ea0bd9f41ff
--
2.50.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] lib/crypto: Drop inline from all *_mod_init_arch() functions
2025-08-16 2:04 [PATCH] lib/crypto: Drop inline from all *_mod_init_arch() functions Eric Biggers
@ 2025-08-21 3:39 ` Eric Biggers
0 siblings, 0 replies; 2+ messages in thread
From: Eric Biggers @ 2025-08-21 3:39 UTC (permalink / raw)
To: linux-crypto; +Cc: linux-kernel, Ard Biesheuvel, Jason A . Donenfeld
On Fri, Aug 15, 2025 at 07:04:57PM -0700, Eric Biggers wrote:
> Drop 'inline' from all the *_mod_init_arch() functions so that the
> compiler will warn about any bugs where they are unused due to not being
> wired up properly. (There are no such bugs currently, so this just
> establishes a more robust convention for the future. Of course, these
> functions also tend to get inlined anyway, regardless of the keyword.)
>
> Signed-off-by: Eric Biggers <ebiggers@kernel.org>
> ---
> lib/crypto/arm/sha1.h | 2 +-
> lib/crypto/arm/sha256.h | 2 +-
> lib/crypto/arm/sha512.h | 2 +-
> lib/crypto/arm64/sha1.h | 2 +-
> lib/crypto/arm64/sha256.h | 2 +-
> lib/crypto/arm64/sha512.h | 2 +-
> lib/crypto/riscv/sha256.h | 2 +-
> lib/crypto/riscv/sha512.h | 2 +-
> lib/crypto/s390/sha1.h | 2 +-
> lib/crypto/s390/sha256.h | 2 +-
> lib/crypto/s390/sha512.h | 2 +-
> lib/crypto/sparc/md5.h | 2 +-
> lib/crypto/sparc/sha1.h | 2 +-
> lib/crypto/sparc/sha256.h | 2 +-
> lib/crypto/sparc/sha512.h | 2 +-
> lib/crypto/x86/sha1.h | 2 +-
> lib/crypto/x86/sha256.h | 2 +-
> lib/crypto/x86/sha512.h | 2 +-
> 18 files changed, 18 insertions(+), 18 deletions(-)
Applied to https://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux.git/log/?h=libcrypto-next
- Eric
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2025-08-21 3:39 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-16 2:04 [PATCH] lib/crypto: Drop inline from all *_mod_init_arch() functions Eric Biggers
2025-08-21 3:39 ` Eric Biggers
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).