diff --git a/module/icp/algs/modes/gcm.c b/module/icp/algs/modes/gcm.c index 3cfa5b816..ab2c5a49f 100644 --- a/module/icp/algs/modes/gcm.c +++ b/module/icp/algs/modes/gcm.c @@ -34,6 +34,7 @@ #include #ifdef CAN_USE_GCM_ASM #include +#include #endif #define GHASH(c, d, t, o) \ diff --git a/module/icp/asm-x86_64/modes/aesni-gcm-avx2-vaes.S b/module/icp/asm-x86_64/modes/aesni-gcm-avx2-vaes.S index 76ced8eba..950c1a7c8 100644 --- a/module/icp/asm-x86_64/modes/aesni-gcm-avx2-vaes.S +++ b/module/icp/asm-x86_64/modes/aesni-gcm-avx2-vaes.S @@ -7,6 +7,7 @@ #define _ASM #include +#include /* Windows userland links with OpenSSL */ #if !defined (_WIN32) || defined (_KERNEL) diff --git a/module/icp/include/modes/gcm_asm_rename_funcs.h b/module/icp/include/modes/gcm_asm_rename_funcs.h new file mode 100644 index 000000000..08c51aeed --- /dev/null +++ b/module/icp/include/modes/gcm_asm_rename_funcs.h @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: CDDL-1.0 +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or https://opensource.org/licenses/CDDL-1.0. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2026 Attila Fülöp + */ + +/* + * Prepend `icp_` to each function name defined in gcm assembly files. + * This avoids potential symbol conflicts with linux libcrypto in case of + * in-tree compilation. To keep the diff noise low, we do this using macros. + * + * Currently only done for aesni-gcm-avx2-vaes.S since there is a real conflict. + */ + +/* module/icp/asm-x86_64/modes/aesni-gcm-avx2-vaes.S */ +#define gcm_init_vpclmulqdq_avx2 icp_gcm_init_vpclmulqdq_avx2 +#define gcm_gmult_vpclmulqdq_avx2 icp_gcm_gmult_vpclmulqdq_avx2 +#define gcm_ghash_vpclmulqdq_avx2 icp_gcm_ghash_vpclmulqdq_avx2 +#define aes_gcm_enc_update_vaes_avx2 icp_aes_gcm_enc_update_vaes_avx2 +#define aes_gcm_dec_update_vaes_avx2 icp_aes_gcm_dec_update_vaes_avx2