From nobody Sun Jun 21 07:31:47 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 47BA2334C2B; Sun, 5 Apr 2026 05:29:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775366954; cv=none; b=ZQMH4IO9vDoJcRwGqMHZmAUsMK2h4zKDLCm+0ASkNpuVsXTaAKfuJ3KqfE5iQWma8wNwGeMqRfloiZvlpnWzqZac3skJy1wQPWyf2ra7fQ6LQNrvvfxCa3zNMXsK4GVz/zHjMsKV/mvlk2vQPcJDIpwcCFZXtOzuIQZetphecgo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775366954; c=relaxed/simple; bh=+73vBBAcFMCvFCTiAqCBr+2nkUg9Bry9d2K3/Wt9MKI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cvbud92InawH10cxa/HElhtpgzMobcb/WA01ZWB6EbYKEdW/jY49I5wKOD44tCNSOSXxZkf7260DZqpT/xZY29cEITPdd2iK8p/eyjzIC2ehRZgLnPadWIugYB1yaB6rOVp51HDLbvm/kuf+zzPqyWO9A7xXmyWNj+N6x0KNA4A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=By6AVK4n; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="By6AVK4n" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DB592C2BC9E; Sun, 5 Apr 2026 05:29:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775366954; bh=+73vBBAcFMCvFCTiAqCBr+2nkUg9Bry9d2K3/Wt9MKI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=By6AVK4nuJXZhah2SfSKt91ELa4Zp47zbgGLoaKU4z+Z8NB1mDXoXKZS3KUcLtd+F oCIV7PJ57dQpXKzV8TSFwbVVH7mFF8OkYv41iOkc4xRzFCXtyH1rliRXkeLE07wGyY eKscM1V+FVYcoIkr2Pe2l4DFv8plwLlyNxP4zV6a4NKNV1zKDxhetcLDAKJsDGdhBJ FpKAbnD4kWLcUcp0qPoRhPGkfdYudtGfVv47Z0t8Eu8UAscJ+qlxCrOrCed1HT3NW3 w+g4+TRBgoVfpksB0HRh9yUrsNhpPrHuanenpqi6RxnR5iXQUbiHVDD1U1sfJee5IQ bFLa9wmVR+a3Q== From: Eric Biggers To: Johannes Berg , linux-wireless@vger.kernel.org Cc: linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, Herbert Xu , Eric Biggers Subject: [PATCH wireless-next 1/6] wifi: mac80211: Export michael_mic() Date: Sat, 4 Apr 2026 22:27:29 -0700 Message-ID: <20260405052734.130368-2-ebiggers@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260405052734.130368-1-ebiggers@kernel.org> References: <20260405052734.130368-1-ebiggers@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Export the michael_mic() function so that it can be reused by the ath11k, ath12k, and ipw2x00 drivers. Currently they have their own local implementations of it based on crypto_shash, which is redundant and inefficient. Signed-off-by: Eric Biggers --- include/linux/ieee80211.h | 5 +++++ net/mac80211/michael.c | 5 ++++- net/mac80211/michael.h | 22 ---------------------- net/mac80211/wpa.c | 1 - 4 files changed, 9 insertions(+), 24 deletions(-) delete mode 100644 net/mac80211/michael.h diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h index b5d649db123fe..da6fcdc742e7c 100644 --- a/include/linux/ieee80211.h +++ b/include/linux/ieee80211.h @@ -1919,10 +1919,15 @@ enum ieee80211_radio_measurement_actioncode { #define FILS_ERP_MAX_RRK_LEN 64 =20 #define PMK_MAX_LEN 64 #define SAE_PASSWORD_MAX_LEN 128 =20 +#define MICHAEL_MIC_LEN 8 + +void michael_mic(const u8 *key, struct ieee80211_hdr *hdr, + const u8 *data, size_t data_len, u8 *mic); + /* Public action codes (IEEE Std 802.11-2016, 9.6.8.1, Table 9-307) */ enum ieee80211_pub_actioncode { WLAN_PUB_ACTION_20_40_BSS_COEX =3D 0, WLAN_PUB_ACTION_DSE_ENABLEMENT =3D 1, WLAN_PUB_ACTION_DSE_DEENABLEMENT =3D 2, diff --git a/net/mac80211/michael.c b/net/mac80211/michael.c index 8a1afc93e7499..50cdb67f0503d 100644 --- a/net/mac80211/michael.c +++ b/net/mac80211/michael.c @@ -6,11 +6,13 @@ #include #include #include #include =20 -#include "michael.h" +struct michael_mic_ctx { + u32 l, r; +}; =20 static void michael_block(struct michael_mic_ctx *mctx, u32 val) { mctx->l ^=3D val; mctx->r ^=3D rol32(mctx->l, 17); @@ -79,5 +81,6 @@ void michael_mic(const u8 *key, struct ieee80211_hdr *hdr, michael_block(&mctx, 0); =20 put_unaligned_le32(mctx.l, mic); put_unaligned_le32(mctx.r, mic + 4); } +EXPORT_SYMBOL_GPL(michael_mic); diff --git a/net/mac80211/michael.h b/net/mac80211/michael.h deleted file mode 100644 index a7fdb8e84615a..0000000000000 --- a/net/mac80211/michael.h +++ /dev/null @@ -1,22 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ -/* - * Michael MIC implementation - optimized for TKIP MIC operations - * Copyright 2002-2003, Instant802 Networks, Inc. - */ - -#ifndef MICHAEL_H -#define MICHAEL_H - -#include -#include - -#define MICHAEL_MIC_LEN 8 - -struct michael_mic_ctx { - u32 l, r; -}; - -void michael_mic(const u8 *key, struct ieee80211_hdr *hdr, - const u8 *data, size_t data_len, u8 *mic); - -#endif /* MICHAEL_H */ diff --git a/net/mac80211/wpa.c b/net/mac80211/wpa.c index 64a57475ce506..724ec831a8857 100644 --- a/net/mac80211/wpa.c +++ b/net/mac80211/wpa.c @@ -16,11 +16,10 @@ #include #include #include =20 #include "ieee80211_i.h" -#include "michael.h" #include "tkip.h" #include "aes_ccm.h" #include "aes_cmac.h" #include "aes_gmac.h" #include "aes_gcm.h" --=20 2.53.0 From nobody Sun Jun 21 07:31:47 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7F6AC34CFAD; Sun, 5 Apr 2026 05:29:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775366954; cv=none; b=lA5tawP/NzPwUMLhOvpduC+KfO7Y/hQ5tLtTUk1BwhkLCRVyx1e5b/8cHbVXUoFtQgeGUAFhRx6pFoPdWvY3rnizuhfsBP2cWplz+tjs8sDcyResTTm2aYM1xdKGOpg1/IcyX6XyxbeTnRFLPzLK0mWHRjTlafGhMyw9zWtqvzc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775366954; c=relaxed/simple; bh=eRxUnQMseAOoYSK3bx4LLgXCdFNIL6YsBJvi65Ofb9s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BXkwzeBZB963LKWasD6Y/4hNymd3vCA8iKzKMQ+5c/h7hMPhXyL/rFZiWM4+AlygsO9Inq5RhCvcefn/vmM5KA8nU6TGU5jbbezg1Vfulz/diCmdP1WUNjbnrqtUVv8GTu813csbq2VFpHA6FDT6HlGu+dOuJkt1wRNcz1FOADk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PInL7lxk; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="PInL7lxk" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 35308C116C6; Sun, 5 Apr 2026 05:29:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775366954; bh=eRxUnQMseAOoYSK3bx4LLgXCdFNIL6YsBJvi65Ofb9s=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PInL7lxkoct0ccO3CBxA9kvQBerpcKdfIx2MuvLtrZ6M+iTJAtQlJ3y6hYTvN0Ose EQL7OAFke7p0pOtDXpZYoiNRu21r9zazBRtDZlEC2zpqasngbMcPsLIIe6EawX9MWt fRqtFKzUdmqbMg1vEMOwqTRDVW0XLOH6z5L2MdHlrYQ6mdVajhtFe2VWUlw0nhh4Wo vsraIeJIqhCCxFdgJWgSExgZID+o22IbeKERvUtjn7ycxGElUxLl6zd9EMXsgXmXSX At7I2YQDNsOziL26TLFCTwHElLHHnwLqASawGJkU1IxM0LKGg563niIEsgnYgrULEs uHmvf78iHKO5A== From: Eric Biggers To: Johannes Berg , linux-wireless@vger.kernel.org Cc: linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, Herbert Xu , Eric Biggers Subject: [PATCH wireless-next 2/6] wifi: ath11k: Use michael_mic() from mac80211 Date: Sat, 4 Apr 2026 22:27:30 -0700 Message-ID: <20260405052734.130368-3-ebiggers@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260405052734.130368-1-ebiggers@kernel.org> References: <20260405052734.130368-1-ebiggers@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Just use the michael_mic() function from mac80211 instead of a local implementation of it on top of the crypto_shash API. Preserve the check for fips_enabled which was present implicitly in the crypto_shash-based code. Signed-off-by: Eric Biggers --- drivers/net/wireless/ath/ath11k/Kconfig | 1 - drivers/net/wireless/ath/ath11k/dp.c | 2 - drivers/net/wireless/ath/ath11k/dp_rx.c | 60 +++---------------------- drivers/net/wireless/ath/ath11k/peer.h | 1 - 4 files changed, 7 insertions(+), 57 deletions(-) diff --git a/drivers/net/wireless/ath/ath11k/Kconfig b/drivers/net/wireless= /ath/ath11k/Kconfig index 47dfd39caa89a..385513cfdc30e 100644 --- a/drivers/net/wireless/ath/ath11k/Kconfig +++ b/drivers/net/wireless/ath/ath11k/Kconfig @@ -1,10 +1,9 @@ # SPDX-License-Identifier: BSD-3-Clause-Clear config ATH11K tristate "Qualcomm Technologies 802.11ax chipset support" depends on MAC80211 && HAS_DMA - select CRYPTO_MICHAEL_MIC select ATH_COMMON select QCOM_QMI_HELPERS help This module adds support for Qualcomm Technologies 802.11ax family of chipsets. diff --git a/drivers/net/wireless/ath/ath11k/dp.c b/drivers/net/wireless/at= h/ath11k/dp.c index c940de285276d..bbb86f1651419 100644 --- a/drivers/net/wireless/ath/ath11k/dp.c +++ b/drivers/net/wireless/ath/ath11k/dp.c @@ -3,11 +3,10 @@ * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights res= erved. * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. */ =20 -#include #include #include "core.h" #include "dp_tx.h" #include "hal_tx.h" #include "hif.h" @@ -37,11 +36,10 @@ void ath11k_dp_peer_cleanup(struct ath11k *ar, int vdev= _id, const u8 *addr) return; } =20 ath11k_peer_rx_tid_cleanup(ar, peer); peer->dp_setup_done =3D false; - crypto_free_shash(peer->tfm_mmic); spin_unlock_bh(&ab->base_lock); } =20 int ath11k_dp_peer_setup(struct ath11k *ar, int vdev_id, const u8 *addr) { diff --git a/drivers/net/wireless/ath/ath11k/dp_rx.c b/drivers/net/wireless= /ath/ath11k/dp_rx.c index 49d959b2e1480..00df93e41fa80 100644 --- a/drivers/net/wireless/ath/ath11k/dp_rx.c +++ b/drivers/net/wireless/ath/ath11k/dp_rx.c @@ -2,14 +2,14 @@ /* * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights res= erved. */ =20 +#include #include #include #include -#include #include "core.h" #include "debug.h" #include "debugfs_htt_stats.h" #include "debugfs_sta.h" #include "hal_desc.h" @@ -3181,96 +3181,50 @@ static void ath11k_dp_rx_frag_timer(struct timer_li= st *timer) } =20 int ath11k_peer_rx_frag_setup(struct ath11k *ar, const u8 *peer_mac, int v= dev_id) { struct ath11k_base *ab =3D ar->ab; - struct crypto_shash *tfm; struct ath11k_peer *peer; struct dp_rx_tid *rx_tid; int i; =20 - tfm =3D crypto_alloc_shash("michael_mic", 0, 0); - if (IS_ERR(tfm)) { - ath11k_warn(ab, "failed to allocate michael_mic shash: %ld\n", - PTR_ERR(tfm)); - return PTR_ERR(tfm); + if (fips_enabled) { + ath11k_warn(ab, "Michael MIC is not FIPS-allowed"); + return -ENOENT; } =20 spin_lock_bh(&ab->base_lock); =20 peer =3D ath11k_peer_find(ab, vdev_id, peer_mac); if (!peer) { ath11k_warn(ab, "failed to find the peer to set up fragment info\n"); spin_unlock_bh(&ab->base_lock); - crypto_free_shash(tfm); return -ENOENT; } =20 for (i =3D 0; i <=3D IEEE80211_NUM_TIDS; i++) { rx_tid =3D &peer->rx_tid[i]; rx_tid->ab =3D ab; timer_setup(&rx_tid->frag_timer, ath11k_dp_rx_frag_timer, 0); skb_queue_head_init(&rx_tid->rx_frags); } =20 - peer->tfm_mmic =3D tfm; peer->dp_setup_done =3D true; spin_unlock_bh(&ab->base_lock); =20 return 0; } =20 -static int ath11k_dp_rx_h_michael_mic(struct crypto_shash *tfm, u8 *key, - struct ieee80211_hdr *hdr, u8 *data, - size_t data_len, u8 *mic) -{ - SHASH_DESC_ON_STACK(desc, tfm); - u8 mic_hdr[16] =3D {}; - u8 tid =3D 0; - int ret; - - if (!tfm) - return -EINVAL; - - desc->tfm =3D tfm; - - ret =3D crypto_shash_setkey(tfm, key, 8); - if (ret) - goto out; - - ret =3D crypto_shash_init(desc); - if (ret) - goto out; - - /* TKIP MIC header */ - memcpy(mic_hdr, ieee80211_get_DA(hdr), ETH_ALEN); - memcpy(mic_hdr + ETH_ALEN, ieee80211_get_SA(hdr), ETH_ALEN); - if (ieee80211_is_data_qos(hdr->frame_control)) - tid =3D ieee80211_get_tid(hdr); - mic_hdr[12] =3D tid; - - ret =3D crypto_shash_update(desc, mic_hdr, 16); - if (ret) - goto out; - ret =3D crypto_shash_update(desc, data, data_len); - if (ret) - goto out; - ret =3D crypto_shash_final(desc, mic); -out: - shash_desc_zero(desc); - return ret; -} - static int ath11k_dp_rx_h_verify_tkip_mic(struct ath11k *ar, struct ath11k= _peer *peer, struct sk_buff *msdu) { struct hal_rx_desc *rx_desc =3D (struct hal_rx_desc *)msdu->data; struct ieee80211_rx_status *rxs =3D IEEE80211_SKB_RXCB(msdu); struct ieee80211_key_conf *key_conf; struct ieee80211_hdr *hdr; u8 mic[IEEE80211_CCMP_MIC_LEN]; - int head_len, tail_len, ret; + int head_len, tail_len; size_t data_len; u32 hdr_len, hal_rx_desc_sz =3D ar->ab->hw_params.hal_desc_sz; u8 *key, *data; u8 key_idx; =20 @@ -3292,12 +3246,12 @@ static int ath11k_dp_rx_h_verify_tkip_mic(struct at= h11k *ar, struct ath11k_peer =20 data =3D msdu->data + head_len; data_len =3D msdu->len - head_len - tail_len; key =3D &key_conf->key[NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY]; =20 - ret =3D ath11k_dp_rx_h_michael_mic(peer->tfm_mmic, key, hdr, data, data_l= en, mic); - if (ret || memcmp(mic, data + data_len, IEEE80211_CCMP_MIC_LEN)) + michael_mic(key, hdr, data, data_len, mic); + if (memcmp(mic, data + data_len, IEEE80211_CCMP_MIC_LEN)) goto mic_fail; =20 return 0; =20 mic_fail: diff --git a/drivers/net/wireless/ath/ath11k/peer.h b/drivers/net/wireless/= ath/ath11k/peer.h index 3ad2f3355b14f..f5ef1a27f8f25 100644 --- a/drivers/net/wireless/ath/ath11k/peer.h +++ b/drivers/net/wireless/ath/ath11k/peer.h @@ -27,11 +27,10 @@ struct ath11k_peer { struct rhash_head rhash_addr; =20 /* Info used in MMIC verification of * RX fragments */ - struct crypto_shash *tfm_mmic; u8 mcast_keyidx; u8 ucast_keyidx; u16 sec_type; u16 sec_type_grp; bool is_authorized; --=20 2.53.0 From nobody Sun Jun 21 07:31:47 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CDBF034E75D; Sun, 5 Apr 2026 05:29:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775366954; cv=none; b=XNuG6Th4khhXgQ4IbWCDVEteX9WNeGSPRK2m1ZVyVFmN+/kht7fgSLStX5tTtqBDsa/L4o7NSKZkqpTAudghpttISFYFlCMmhm3ULuSw7bkgkdS+FY3VgoQfQdkPHWx1kE0WnqfrzTCywtJrp7ZBoXB9W+k9Z63DHWwyXz85WfI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775366954; c=relaxed/simple; bh=wWbauHp2/ZCXmnT9Mjc6U2HkU6UbWke0qEfKO0n2zRE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EYYsQKo8XXgSy9KSqFY41aW5V+X/n2AY/+ABjnooQAkGbcp/EOW0IYW/wfj+KirF9YcOc5SnuwXdA5vZ/Lm9LfvXeI5X0U4zet8QOA/hNtItI/Hj1CQcCzssOfZ7somCdQsp7jmIUz+3+S/lkINQgXeq0ERWt1HQW0RrNJ/iI8U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=n5mDLni5; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="n5mDLni5" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 83097C2BCB0; Sun, 5 Apr 2026 05:29:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775366954; bh=wWbauHp2/ZCXmnT9Mjc6U2HkU6UbWke0qEfKO0n2zRE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=n5mDLni5RzJGfWK56KCMJADgPbw8Ee3tBDFk0uDF61iLaQNOLz0uPHqDMSxpgqPhC dnBBjE7/wGaeHiyp9VDiHy7ctJ0/aySDF9QbXAYpnpHJJnbAFHu0hJ/eakUBptoJXO Yeigymf0HUkpFfNwNzOxblMXHnETJki56lXib4RXtQY7qIIqotZvFss1rlSM4nOH5s nl+/inZxuQcnPfZOm6kGcJjfLt2mRtGLmNyGNZaLYc6Ivn6/tttFicjP8P0k6kwyGz Kl0HXtH+KfzpzJl8RCXHY6ia1d1To42uoG/FeSy1PP46tlPyUJEJgOnOWzofNp+jdG oIY3AMmeChz7A== From: Eric Biggers To: Johannes Berg , linux-wireless@vger.kernel.org Cc: linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, Herbert Xu , Eric Biggers Subject: [PATCH wireless-next 3/6] wifi: ath12k: Use michael_mic() from mac80211 Date: Sat, 4 Apr 2026 22:27:31 -0700 Message-ID: <20260405052734.130368-4-ebiggers@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260405052734.130368-1-ebiggers@kernel.org> References: <20260405052734.130368-1-ebiggers@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Just use the michael_mic() function from mac80211 instead of a local implementation of it on top of the crypto_shash API. Preserve the check for fips_enabled which was present implicitly in the crypto_shash-based code. Signed-off-by: Eric Biggers --- drivers/net/wireless/ath/ath12k/Kconfig | 1 - drivers/net/wireless/ath/ath12k/dp.c | 2 - drivers/net/wireless/ath/ath12k/dp_peer.h | 1 - drivers/net/wireless/ath/ath12k/dp_rx.c | 55 ++----------------- drivers/net/wireless/ath/ath12k/dp_rx.h | 4 -- drivers/net/wireless/ath/ath12k/wifi7/dp_rx.c | 7 +-- 6 files changed, 8 insertions(+), 62 deletions(-) diff --git a/drivers/net/wireless/ath/ath12k/Kconfig b/drivers/net/wireless= /ath/ath12k/Kconfig index 1ea1af1b8f6c5..d39c075758bda 100644 --- a/drivers/net/wireless/ath/ath12k/Kconfig +++ b/drivers/net/wireless/ath/ath12k/Kconfig @@ -1,10 +1,9 @@ # SPDX-License-Identifier: BSD-3-Clause-Clear config ATH12K tristate "Qualcomm Technologies Wi-Fi 7 support (ath12k)" depends on MAC80211 && HAS_DMA && PCI - select CRYPTO_MICHAEL_MIC select QCOM_QMI_HELPERS select MHI_BUS select QRTR select QRTR_MHI select PCI_PWRCTRL_PWRSEQ if HAVE_PWRCTRL diff --git a/drivers/net/wireless/ath/ath12k/dp.c b/drivers/net/wireless/at= h/ath12k/dp.c index 1c82d927d27b2..90802ed1aa59f 100644 --- a/drivers/net/wireless/ath/ath12k/dp.c +++ b/drivers/net/wireless/ath/ath12k/dp.c @@ -2,11 +2,10 @@ /* * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved. * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. */ =20 -#include #include "core.h" #include "dp_tx.h" #include "hif.h" #include "hal.h" #include "debug.h" @@ -39,11 +38,10 @@ void ath12k_dp_peer_cleanup(struct ath12k *ar, int vdev= _id, const u8 *addr) spin_unlock_bh(&dp->dp_lock); return; } =20 ath12k_dp_rx_peer_tid_cleanup(ar, peer); - crypto_free_shash(peer->dp_peer->tfm_mmic); peer->dp_peer->dp_setup_done =3D false; spin_unlock_bh(&dp->dp_lock); } =20 int ath12k_dp_peer_setup(struct ath12k *ar, int vdev_id, const u8 *addr) diff --git a/drivers/net/wireless/ath/ath12k/dp_peer.h b/drivers/net/wirele= ss/ath/ath12k/dp_peer.h index 20294ff095131..113b8040010fa 100644 --- a/drivers/net/wireless/ath/ath12k/dp_peer.h +++ b/drivers/net/wireless/ath/ath12k/dp_peer.h @@ -137,11 +137,10 @@ struct ath12k_dp_peer { =20 u16 sec_type_grp; u16 sec_type; =20 /* Info used in MMIC verification of * RX fragments */ - struct crypto_shash *tfm_mmic; struct ieee80211_key_conf *keys[WMI_MAX_KEY_INDEX + 1]; struct ath12k_dp_link_peer __rcu *link_peers[ATH12K_NUM_MAX_LINKS]; struct ath12k_reoq_buf reoq_bufs[IEEE80211_NUM_TIDS + 1]; struct ath12k_dp_rx_tid rx_tid[IEEE80211_NUM_TIDS + 1]; }; diff --git a/drivers/net/wireless/ath/ath12k/dp_rx.c b/drivers/net/wireless= /ath/ath12k/dp_rx.c index f0b4f607b8452..1272fd6c69860 100644 --- a/drivers/net/wireless/ath/ath12k/dp_rx.c +++ b/drivers/net/wireless/ath/ath12k/dp_rx.c @@ -2,14 +2,14 @@ /* * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved. * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. */ =20 +#include #include #include #include -#include #include "core.h" #include "debug.h" #include "hw.h" #include "dp_rx.h" #include "dp_tx.h" @@ -1429,92 +1429,47 @@ static void ath12k_dp_rx_frag_timer(struct timer_li= st *timer) } =20 int ath12k_dp_rx_peer_frag_setup(struct ath12k *ar, const u8 *peer_mac, in= t vdev_id) { struct ath12k_base *ab =3D ar->ab; - struct crypto_shash *tfm; struct ath12k_dp_link_peer *peer; struct ath12k_dp_rx_tid *rx_tid; int i; struct ath12k_dp *dp =3D ath12k_ab_to_dp(ab); =20 - tfm =3D crypto_alloc_shash("michael_mic", 0, 0); - if (IS_ERR(tfm)) - return PTR_ERR(tfm); + if (fips_enabled) { + ath12k_warn(ab, "Michael MIC is not FIPS-allowed"); + return -ENOENT; + } =20 spin_lock_bh(&dp->dp_lock); =20 peer =3D ath12k_dp_link_peer_find_by_vdev_and_addr(dp, vdev_id, peer_mac); if (!peer || !peer->dp_peer) { spin_unlock_bh(&dp->dp_lock); - crypto_free_shash(tfm); ath12k_warn(ab, "failed to find the peer to set up fragment info\n"); return -ENOENT; } =20 if (!peer->primary_link) { spin_unlock_bh(&dp->dp_lock); - crypto_free_shash(tfm); return 0; } =20 for (i =3D 0; i <=3D IEEE80211_NUM_TIDS; i++) { rx_tid =3D &peer->dp_peer->rx_tid[i]; rx_tid->dp =3D dp; timer_setup(&rx_tid->frag_timer, ath12k_dp_rx_frag_timer, 0); skb_queue_head_init(&rx_tid->rx_frags); } =20 - peer->dp_peer->tfm_mmic =3D tfm; peer->dp_peer->dp_setup_done =3D true; spin_unlock_bh(&dp->dp_lock); =20 return 0; } =20 -int ath12k_dp_rx_h_michael_mic(struct crypto_shash *tfm, u8 *key, - struct ieee80211_hdr *hdr, u8 *data, - size_t data_len, u8 *mic) -{ - SHASH_DESC_ON_STACK(desc, tfm); - u8 mic_hdr[16] =3D {}; - u8 tid =3D 0; - int ret; - - if (!tfm) - return -EINVAL; - - desc->tfm =3D tfm; - - ret =3D crypto_shash_setkey(tfm, key, 8); - if (ret) - goto out; - - ret =3D crypto_shash_init(desc); - if (ret) - goto out; - - /* TKIP MIC header */ - memcpy(mic_hdr, ieee80211_get_DA(hdr), ETH_ALEN); - memcpy(mic_hdr + ETH_ALEN, ieee80211_get_SA(hdr), ETH_ALEN); - if (ieee80211_is_data_qos(hdr->frame_control)) - tid =3D ieee80211_get_tid(hdr); - mic_hdr[12] =3D tid; - - ret =3D crypto_shash_update(desc, mic_hdr, 16); - if (ret) - goto out; - ret =3D crypto_shash_update(desc, data, data_len); - if (ret) - goto out; - ret =3D crypto_shash_final(desc, mic); -out: - shash_desc_zero(desc); - return ret; -} -EXPORT_SYMBOL(ath12k_dp_rx_h_michael_mic); - void ath12k_dp_rx_h_undecap_frag(struct ath12k_pdev_dp *dp_pdev, struct sk= _buff *msdu, enum hal_encrypt_type enctype, u32 flags) { struct ath12k_dp *dp =3D dp_pdev->dp; struct ieee80211_hdr *hdr; diff --git a/drivers/net/wireless/ath/ath12k/dp_rx.h b/drivers/net/wireless= /ath/ath12k/dp_rx.h index bd62af0c80d46..55a31e669b3b0 100644 --- a/drivers/net/wireless/ath/ath12k/dp_rx.h +++ b/drivers/net/wireless/ath/ath12k/dp_rx.h @@ -4,11 +4,10 @@ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. */ #ifndef ATH12K_DP_RX_H #define ATH12K_DP_RX_H =20 -#include #include "core.h" #include "debug.h" =20 #define DP_MAX_NWIFI_HDR_LEN 30 =20 @@ -202,13 +201,10 @@ u64 ath12k_dp_rx_h_get_pn(struct ath12k_dp *dp, struc= t sk_buff *skb); void ath12k_dp_rx_h_sort_frags(struct ath12k_hal *hal, struct sk_buff_head *frag_list, struct sk_buff *cur_frag); void ath12k_dp_rx_h_undecap_frag(struct ath12k_pdev_dp *dp_pdev, struct sk= _buff *msdu, enum hal_encrypt_type enctype, u32 flags); -int ath12k_dp_rx_h_michael_mic(struct crypto_shash *tfm, u8 *key, - struct ieee80211_hdr *hdr, u8 *data, - size_t data_len, u8 *mic); int ath12k_dp_rx_ampdu_start(struct ath12k *ar, struct ieee80211_ampdu_params *params, u8 link_id); int ath12k_dp_rx_ampdu_stop(struct ath12k *ar, struct ieee80211_ampdu_params *params, diff --git a/drivers/net/wireless/ath/ath12k/wifi7/dp_rx.c b/drivers/net/wi= reless/ath/ath12k/wifi7/dp_rx.c index e6a934d74e85d..945680b3ebdfc 100644 --- a/drivers/net/wireless/ath/ath12k/wifi7/dp_rx.c +++ b/drivers/net/wireless/ath/ath12k/wifi7/dp_rx.c @@ -981,11 +981,11 @@ static int ath12k_wifi7_dp_rx_h_verify_tkip_mic(struc= t ath12k_pdev_dp *dp_pdev, struct hal_rx_desc *rx_desc =3D (struct hal_rx_desc *)msdu->data; struct ieee80211_rx_status *rxs =3D IEEE80211_SKB_RXCB(msdu); struct ieee80211_key_conf *key_conf; struct ieee80211_hdr *hdr; u8 mic[IEEE80211_CCMP_MIC_LEN]; - int head_len, tail_len, ret; + int head_len, tail_len; size_t data_len; u32 hdr_len, hal_rx_desc_sz =3D hal->hal_desc_sz; u8 *key, *data; u8 key_idx; =20 @@ -1009,13 +1009,12 @@ static int ath12k_wifi7_dp_rx_h_verify_tkip_mic(str= uct ath12k_pdev_dp *dp_pdev, =20 data =3D msdu->data + head_len; data_len =3D msdu->len - head_len - tail_len; key =3D &key_conf->key[NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY]; =20 - ret =3D ath12k_dp_rx_h_michael_mic(peer->tfm_mmic, key, hdr, data, - data_len, mic); - if (ret || memcmp(mic, data + data_len, IEEE80211_CCMP_MIC_LEN)) + michael_mic(key, hdr, data, data_len, mic); + if (memcmp(mic, data + data_len, IEEE80211_CCMP_MIC_LEN)) goto mic_fail; =20 return 0; =20 mic_fail: --=20 2.53.0 From nobody Sun Jun 21 07:31:47 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 40862351C2A; Sun, 5 Apr 2026 05:29:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775366955; cv=none; b=BD1FtvfV3xqYFAF8nUde9YhMGZ+Bm7P0jUdjm9dZkosE/Zn4KvbS9yBZv+50RE4z7djshPP4+KcMqIutOXul+4UOvWFM3CwyKdQZ3KzjrFiWOX6AvY2LjfkkfaAPTHlN6mdzk9YesSgLB54B3CB6WDzksnfcpV7Y2gaq06zCo+g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775366955; c=relaxed/simple; bh=P7N79mZSIUUEmlci1wydd5YAVIsZ5EiCk6ap0u2SJlE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tcLVvqJCoK2QMdUr/Em3RQVpWJ1njwCLQh+hMiQR9B0fo3jnpLprjSsn+nmuuiOwrsyx7tAtG6WmIXXywJLfmwCjIxM8kWIcoFLo0ACWVubw8a4GSa26U+J+FFQhqFjlj6vXoWeEtYWn/Va29x4nVsgH2Ju8jZ+/jBPlre31gX0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=hRF4Jnfh; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="hRF4Jnfh" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D0906C2BCB4; Sun, 5 Apr 2026 05:29:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775366955; bh=P7N79mZSIUUEmlci1wydd5YAVIsZ5EiCk6ap0u2SJlE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hRF4JnfhzMnEa9rt51PiljUD8JzXZhy0AYjoCOW04JqAWdAMRtVAM6FWnjZASZzW0 mM7nLjTXLs8a+9EjxZTn+1J+WaEHS+XChfXFstUhwZmfpsQ+PTj7m9k/gIRZIz9/Y7 f7he3QQS0WZWpOanL3YdvFNCGkHKN5VMpENFoP2JwyDEU49FX1ekYSRqZZ/OEG1Fxc Mx6ebgUUmsWnlsMt96CZit9lPJfHOfINU8fcCtiFu9c7GUxbzc6ZefJD46zu4bQR9N 8f71WAaH9VTsRFdE+1ct5E2B6CpDDi7S75bIFPty2qnuI1IuNzmshs0aOYRoh2Qqu5 l+/DdyhX2/Z6A== From: Eric Biggers To: Johannes Berg , linux-wireless@vger.kernel.org Cc: linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, Herbert Xu , Eric Biggers Subject: [PATCH wireless-next 4/6] wifi: ipw2x00: Depend on MAC80211 Date: Sat, 4 Apr 2026 22:27:32 -0700 Message-ID: <20260405052734.130368-5-ebiggers@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260405052734.130368-1-ebiggers@kernel.org> References: <20260405052734.130368-1-ebiggers@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" While the ipw2100 and ipw2200 hardware is "Full MAC" in the sense that it handles management frames (like association and scanning), it doesn't implement various cryptographic protocols, such as the Michael MIC algorithm used in the (deprecated) TKIP. Currently ipw2x00 accesses Michael MIC via the crypto_shash API. Yet, the mac80211 module already has its own Michael MIC implementation. ipw2x00 is the only code in the kernel tree that needs a Michael MIC implementation that doesn't already depend on CONFIG_MAC80211. Just add the dependency on MAC80211 so that we'll be able to consolidate the Michael MIC code in mac80211 and remove it from crypto_shash. Alternatives considered: - Move michael_mic() from mac80211 to cfg80211. Probably not worth it just for ipw2x00. - Move michael_mic() to its own independent module. Again, probably not worth it just for ipw2x00. - Copy michael_mic() into ipw2x00. It seems better to avoid the duplicate copy. Signed-off-by: Eric Biggers --- drivers/net/wireless/intel/ipw2x00/Kconfig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/intel/ipw2x00/Kconfig b/drivers/net/wirel= ess/intel/ipw2x00/Kconfig index b92df91adb3a4..13d69f94c889a 100644 --- a/drivers/net/wireless/intel/ipw2x00/Kconfig +++ b/drivers/net/wireless/intel/ipw2x00/Kconfig @@ -3,11 +3,11 @@ # Intel Centrino wireless drivers # =20 config IPW2100 tristate "Intel PRO/Wireless 2100 Network Connection" - depends on PCI && CFG80211 + depends on PCI && MAC80211 select WIRELESS_EXT select WEXT_PRIV select FW_LOADER select LIBIPW help @@ -62,11 +62,11 @@ config IPW2100_DEBUG If you are not trying to debug or develop the IPW2100 driver, you most likely want to say N here. =20 config IPW2200 tristate "Intel PRO/Wireless 2200BG and 2915ABG Network Connection" - depends on PCI && CFG80211 + depends on PCI && MAC80211 select WIRELESS_EXT select WEXT_PRIV select FW_LOADER select LIBIPW help @@ -149,11 +149,11 @@ config IPW2200_DEBUG =20 If you are not sure, say N here. =20 config LIBIPW tristate - depends on PCI && CFG80211 + depends on PCI && MAC80211 select WIRELESS_EXT select CRYPTO select CRYPTO_MICHAEL_MIC select CRYPTO_LIB_ARC4 select CRC32 --=20 2.53.0 From nobody Sun Jun 21 07:31:47 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 93E2F3542F8; Sun, 5 Apr 2026 05:29:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775366955; cv=none; b=nuRrZRpVY6nTd89PPgX7r2koBDoGmVg0qdArX41QjaKStiysMMqecAumJSz4I1iyhodqLusl0geyvqW7g/4M/io5zdmJHQvneYorRP/fvRLIz1eN6XXyepL+bqNY/Ua30Y7xOw5phNYD2RekEVkzX+itKPcg0FDkGtNGWBTB4bk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775366955; c=relaxed/simple; bh=vrLB6OBRThdXdmqJgEe/eSGyQFzsiWqeL1feX128tUE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=F0AprZQf3n7Zzfj1gMDGOjPh+eFCFdysvjSd5np5AF5DD9tqMMCllHKQe/WCQ1qF31zDaBQcmMWd/QDdSkj7gUzKfOJSLLtSwrdkYLr46RdJnwiOy64Y1iDawTM5k7zg3vXKVPz9Gv/6T1tXmbBaUWhFx1V2PSw6iEo4b116kEM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ZSawBgLQ; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ZSawBgLQ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2A002C4AF09; Sun, 5 Apr 2026 05:29:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775366955; bh=vrLB6OBRThdXdmqJgEe/eSGyQFzsiWqeL1feX128tUE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZSawBgLQ5QYtAYdlOlMLDeAaMqsgpRUoSz6UJx4WJmjpj0gfQxqltPsJfSFBDlR/+ 7xnCJT5fg194eu63qWuganBnjMVNxS5SzVO3nbHJVbP8PfzNtQBS0vQZLv7EeY3wy/ 5xlElhtXxqYfv+nOnpZkq4tNbvah20FdPXe/Ov7PxGjud+dOj+TUQy6G2R/EeOm14q Q4kWNnZz4bKJN3gRJnhNUcupSyI7ab+oOVRW04cucrHQ+TQrWvXdieTqQVCSOQPRtY Ao+y20Tsfp/ms5t36QrNFstf8QJoQdoQXOEHjYpfgb4VotlDiZbm1JOERw1nb4HBKI 7CTfRiEacJT4Q== From: Eric Biggers To: Johannes Berg , linux-wireless@vger.kernel.org Cc: linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, Herbert Xu , Eric Biggers Subject: [PATCH wireless-next 5/6] wifi: ipw2x00: Use michael_mic() from mac80211 Date: Sat, 4 Apr 2026 22:27:33 -0700 Message-ID: <20260405052734.130368-6-ebiggers@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260405052734.130368-1-ebiggers@kernel.org> References: <20260405052734.130368-1-ebiggers@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Just use the michael_mic() function from mac80211 instead of a local implementation of it on top of the crypto_shash API. Signed-off-by: Eric Biggers --- drivers/net/wireless/intel/ipw2x00/Kconfig | 1 - .../intel/ipw2x00/libipw_crypto_tkip.c | 120 +----------------- 2 files changed, 5 insertions(+), 116 deletions(-) diff --git a/drivers/net/wireless/intel/ipw2x00/Kconfig b/drivers/net/wirel= ess/intel/ipw2x00/Kconfig index 13d69f94c889a..20d1392e1d61c 100644 --- a/drivers/net/wireless/intel/ipw2x00/Kconfig +++ b/drivers/net/wireless/intel/ipw2x00/Kconfig @@ -152,11 +152,10 @@ config IPW2200_DEBUG config LIBIPW tristate depends on PCI && MAC80211 select WIRELESS_EXT select CRYPTO - select CRYPTO_MICHAEL_MIC select CRYPTO_LIB_ARC4 select CRC32 help This option enables the hardware independent IEEE 802.11 networking stack. This component is deprecated in favor of the diff --git a/drivers/net/wireless/intel/ipw2x00/libipw_crypto_tkip.c b/driv= ers/net/wireless/intel/ipw2x00/libipw_crypto_tkip.c index c6b0de8d91aea..24bb28ab7a49b 100644 --- a/drivers/net/wireless/intel/ipw2x00/libipw_crypto_tkip.c +++ b/drivers/net/wireless/intel/ipw2x00/libipw_crypto_tkip.c @@ -23,12 +23,10 @@ #include #include #include #include #include -#include -#include #include #include "libipw.h" =20 #define TKIP_HDR_LEN 8 =20 @@ -55,15 +53,10 @@ struct libipw_tkip_data { =20 int key_idx; =20 struct arc4_ctx rx_ctx_arc4; struct arc4_ctx tx_ctx_arc4; - struct crypto_shash *rx_tfm_michael; - struct crypto_shash *tx_tfm_michael; - - /* scratch buffers for virt_to_page() (crypto API) */ - u8 rx_hdr[16], tx_hdr[16]; =20 unsigned long flags; }; =20 static unsigned long libipw_tkip_set_flags(unsigned long flags, void *priv) @@ -87,45 +80,18 @@ static void *libipw_tkip_init(int key_idx) if (fips_enabled) return NULL; =20 priv =3D kzalloc_obj(*priv, GFP_ATOMIC); if (priv =3D=3D NULL) - goto fail; + return priv; =20 priv->key_idx =3D key_idx; - - priv->tx_tfm_michael =3D crypto_alloc_shash("michael_mic", 0, 0); - if (IS_ERR(priv->tx_tfm_michael)) { - priv->tx_tfm_michael =3D NULL; - goto fail; - } - - priv->rx_tfm_michael =3D crypto_alloc_shash("michael_mic", 0, 0); - if (IS_ERR(priv->rx_tfm_michael)) { - priv->rx_tfm_michael =3D NULL; - goto fail; - } - return priv; - - fail: - if (priv) { - crypto_free_shash(priv->tx_tfm_michael); - crypto_free_shash(priv->rx_tfm_michael); - kfree(priv); - } - - return NULL; } =20 static void libipw_tkip_deinit(void *priv) { - struct libipw_tkip_data *_priv =3D priv; - if (_priv) { - crypto_free_shash(_priv->tx_tfm_michael); - crypto_free_shash(_priv->rx_tfm_michael); - } kfree_sensitive(priv); } =20 static inline u16 RotR1(u16 val) { @@ -462,77 +428,10 @@ static int libipw_tkip_decrypt(struct sk_buff *skb, i= nt hdr_len, void *priv) skb_trim(skb, skb->len - 4); =20 return keyidx; } =20 -static int michael_mic(struct crypto_shash *tfm_michael, u8 *key, u8 *hdr, - u8 *data, size_t data_len, u8 *mic) -{ - SHASH_DESC_ON_STACK(desc, tfm_michael); - int err; - - if (tfm_michael =3D=3D NULL) { - pr_warn("%s(): tfm_michael =3D=3D NULL\n", __func__); - return -1; - } - - desc->tfm =3D tfm_michael; - - if (crypto_shash_setkey(tfm_michael, key, 8)) - return -1; - - err =3D crypto_shash_init(desc); - if (err) - goto out; - err =3D crypto_shash_update(desc, hdr, 16); - if (err) - goto out; - err =3D crypto_shash_update(desc, data, data_len); - if (err) - goto out; - err =3D crypto_shash_final(desc, mic); - -out: - shash_desc_zero(desc); - return err; -} - -static void michael_mic_hdr(struct sk_buff *skb, u8 * hdr) -{ - struct ieee80211_hdr *hdr11; - - hdr11 =3D (struct ieee80211_hdr *)skb->data; - - switch (le16_to_cpu(hdr11->frame_control) & - (IEEE80211_FCTL_FROMDS | IEEE80211_FCTL_TODS)) { - case IEEE80211_FCTL_TODS: - memcpy(hdr, hdr11->addr3, ETH_ALEN); /* DA */ - memcpy(hdr + ETH_ALEN, hdr11->addr2, ETH_ALEN); /* SA */ - break; - case IEEE80211_FCTL_FROMDS: - memcpy(hdr, hdr11->addr1, ETH_ALEN); /* DA */ - memcpy(hdr + ETH_ALEN, hdr11->addr3, ETH_ALEN); /* SA */ - break; - case IEEE80211_FCTL_FROMDS | IEEE80211_FCTL_TODS: - memcpy(hdr, hdr11->addr3, ETH_ALEN); /* DA */ - memcpy(hdr + ETH_ALEN, hdr11->addr4, ETH_ALEN); /* SA */ - break; - default: - memcpy(hdr, hdr11->addr1, ETH_ALEN); /* DA */ - memcpy(hdr + ETH_ALEN, hdr11->addr2, ETH_ALEN); /* SA */ - break; - } - - if (ieee80211_is_data_qos(hdr11->frame_control)) { - hdr[12] =3D le16_to_cpu(*((__le16 *)ieee80211_get_qos_ctl(hdr11))) - & IEEE80211_QOS_CTL_TID_MASK; - } else - hdr[12] =3D 0; /* priority */ - - hdr[13] =3D hdr[14] =3D hdr[15] =3D 0; /* reserved */ -} - static int libipw_michael_mic_add(struct sk_buff *skb, int hdr_len, void *priv) { struct libipw_tkip_data *tkey =3D priv; u8 *pos; @@ -542,16 +441,13 @@ static int libipw_michael_mic_add(struct sk_buff *skb= , int hdr_len, "(tailroom=3D%d hdr_len=3D%d skb->len=3D%d)\n", skb_tailroom(skb), hdr_len, skb->len); return -1; } =20 - michael_mic_hdr(skb, tkey->tx_hdr); pos =3D skb_put(skb, 8); - if (michael_mic(tkey->tx_tfm_michael, &tkey->key[16], tkey->tx_hdr, - skb->data + hdr_len, skb->len - 8 - hdr_len, pos)) - return -1; - + michael_mic(&tkey->key[16], (struct ieee80211_hdr *)skb->data, + skb->data + hdr_len, skb->len - 8 - hdr_len, pos); return 0; } =20 static void libipw_michael_mic_failure(struct net_device *dev, struct ieee80211_hdr *hdr, @@ -581,14 +477,12 @@ static int libipw_michael_mic_verify(struct sk_buff *= skb, int keyidx, u8 mic[8]; =20 if (!tkey->key_set) return -1; =20 - michael_mic_hdr(skb, tkey->rx_hdr); - if (michael_mic(tkey->rx_tfm_michael, &tkey->key[24], tkey->rx_hdr, - skb->data + hdr_len, skb->len - 8 - hdr_len, mic)) - return -1; + michael_mic(&tkey->key[24], (struct ieee80211_hdr *)skb->data, + skb->data + hdr_len, skb->len - 8 - hdr_len, mic); if (memcmp(mic, skb->data + skb->len - 8, 8) !=3D 0) { struct ieee80211_hdr *hdr; hdr =3D (struct ieee80211_hdr *)skb->data; printk(KERN_DEBUG "%s: Michael MIC verification failed for " "MSDU from %pM keyidx=3D%d\n", @@ -612,21 +506,17 @@ static int libipw_michael_mic_verify(struct sk_buff *= skb, int keyidx, =20 static int libipw_tkip_set_key(void *key, int len, u8 * seq, void *priv) { struct libipw_tkip_data *tkey =3D priv; int keyidx; - struct crypto_shash *tfm =3D tkey->tx_tfm_michael; struct arc4_ctx *tfm2 =3D &tkey->tx_ctx_arc4; - struct crypto_shash *tfm3 =3D tkey->rx_tfm_michael; struct arc4_ctx *tfm4 =3D &tkey->rx_ctx_arc4; =20 keyidx =3D tkey->key_idx; memset(tkey, 0, sizeof(*tkey)); tkey->key_idx =3D keyidx; - tkey->tx_tfm_michael =3D tfm; tkey->tx_ctx_arc4 =3D *tfm2; - tkey->rx_tfm_michael =3D tfm3; tkey->rx_ctx_arc4 =3D *tfm4; if (len =3D=3D TKIP_KEY_LEN) { memcpy(tkey->key, key, TKIP_KEY_LEN); tkey->key_set =3D 1; tkey->tx_iv16 =3D 1; /* TSC is initialized to 1 */ --=20 2.53.0 From nobody Sun Jun 21 07:31:47 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DFD43357A25; Sun, 5 Apr 2026 05:29:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775366956; cv=none; b=lNx5AK6INz7Mc3S0LKnZwKzVJmCd0yMCETz95LE148Jba3rHx7cwOp5wVRpTgZLXwxUl0vu6+Vl1bV3Qsa7UsLrT6Zhj8iDgeZlDSTE1vTs9YCGodFUQSXnD8eRtm1eE7Pc0bnxsqiX1M4jxf53FCzoH5zwyHIlfGFX2xeodcbo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775366956; c=relaxed/simple; bh=fzDPwWUH9NHtQZ4z7d+67XzwM/7ca4ElnJ0GkDnr8qE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Hbk7xT2oDdEqpuXCOjeiN5f7XjAmkEo0k3ztyvF+Mkyq7595Rt2Mc5/JxOAlszzHRdDjrOlhGkQHfzuRmheORyD3nA8+/amXDZhxbdwhDObe1wmei9/EbnTvz7NcncnFW/WSYvyw97nMiWdszc/zNCKRj7jeI6VpuQdEE0mjYc4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=mIP2Xgkd; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="mIP2Xgkd" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 77CF1C2BCB1; Sun, 5 Apr 2026 05:29:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775366955; bh=fzDPwWUH9NHtQZ4z7d+67XzwM/7ca4ElnJ0GkDnr8qE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=mIP2XgkdAran+KWnYV9zeVNh0Gn19O3XxcayFnTMxwym+Xk2Yl1KoUUjvK4+j2RXL PNQbXgfoREkOXnrhR6RDNyyVOrkhLYLoO6kmrqrX3XdhsdIhcb7nTOc8Drk1L8iesb LvO4bw/sv2qsoaj6kbHhSeSXArcyPpjlcsO0XvWLQfz8VD9D97jqgwzZqBqYZNn5AW OlC1UEFi9DGuS1QnrREvQZA43yYkV2sdcn+BbiDRSpd+HuAXnPWOaWq7L/1pZ2mi2M osJmQSBY3Mepnmz/tddR6R2urGf0LsaSjPSKGjPyO1PvM1txlqNMai5JcE8VtXqfg7 WtE3UHEuvnLwQ== From: Eric Biggers To: Johannes Berg , linux-wireless@vger.kernel.org Cc: linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, Herbert Xu , Eric Biggers Subject: [PATCH wireless-next 6/6] crypto: Remove michael_mic from crypto_shash API Date: Sat, 4 Apr 2026 22:27:34 -0700 Message-ID: <20260405052734.130368-7-ebiggers@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260405052734.130368-1-ebiggers@kernel.org> References: <20260405052734.130368-1-ebiggers@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Remove the "michael_mic" crypto_shash algorithm, since it's no longer used. Its only users were wireless drivers, which have now been converted to use the michael_mic() function instead. It makes sense that no other users ever appeared: Michael MIC is an insecure algorithm that is specific to WPA TKIP, which itself was an interim security solution to replace the broken WEP standard. Signed-off-by: Eric Biggers Acked-by: Geert Uytterhoeven --- arch/arm/configs/omap2plus_defconfig | 1 - arch/arm/configs/spitz_defconfig | 1 - arch/arm64/configs/defconfig | 1 - arch/m68k/configs/amiga_defconfig | 1 - arch/m68k/configs/apollo_defconfig | 1 - arch/m68k/configs/atari_defconfig | 1 - arch/m68k/configs/bvme6000_defconfig | 1 - arch/m68k/configs/hp300_defconfig | 1 - arch/m68k/configs/mac_defconfig | 1 - arch/m68k/configs/multi_defconfig | 1 - arch/m68k/configs/mvme147_defconfig | 1 - arch/m68k/configs/mvme16x_defconfig | 1 - arch/m68k/configs/q40_defconfig | 1 - arch/m68k/configs/sun3_defconfig | 1 - arch/m68k/configs/sun3x_defconfig | 1 - arch/mips/configs/bigsur_defconfig | 1 - arch/mips/configs/decstation_64_defconfig | 1 - arch/mips/configs/decstation_defconfig | 1 - arch/mips/configs/decstation_r4k_defconfig | 1 - arch/mips/configs/gpr_defconfig | 1 - arch/mips/configs/ip32_defconfig | 1 - arch/mips/configs/lemote2f_defconfig | 1 - arch/mips/configs/malta_qemu_32r6_defconfig | 1 - arch/mips/configs/maltaaprp_defconfig | 1 - arch/mips/configs/maltasmvp_defconfig | 1 - arch/mips/configs/maltasmvp_eva_defconfig | 1 - arch/mips/configs/maltaup_defconfig | 1 - arch/mips/configs/mtx1_defconfig | 1 - arch/mips/configs/rm200_defconfig | 1 - arch/mips/configs/sb1250_swarm_defconfig | 1 - arch/parisc/configs/generic-32bit_defconfig | 1 - arch/parisc/configs/generic-64bit_defconfig | 1 - arch/powerpc/configs/g5_defconfig | 1 - arch/powerpc/configs/linkstation_defconfig | 1 - arch/powerpc/configs/mvme5100_defconfig | 1 - arch/powerpc/configs/powernv_defconfig | 1 - arch/powerpc/configs/ppc64_defconfig | 1 - arch/powerpc/configs/ppc64e_defconfig | 1 - arch/powerpc/configs/ppc6xx_defconfig | 1 - arch/powerpc/configs/ps3_defconfig | 1 - arch/s390/configs/debug_defconfig | 1 - arch/s390/configs/defconfig | 1 - arch/sh/configs/sh2007_defconfig | 1 - arch/sh/configs/titan_defconfig | 1 - arch/sh/configs/ul2_defconfig | 1 - arch/sparc/configs/sparc32_defconfig | 1 - arch/sparc/configs/sparc64_defconfig | 1 - crypto/Kconfig | 12 -- crypto/Makefile | 1 - crypto/michael_mic.c | 176 -------------------- crypto/tcrypt.c | 4 - crypto/testmgr.c | 6 - crypto/testmgr.h | 50 ------ 53 files changed, 296 deletions(-) delete mode 100644 crypto/michael_mic.c diff --git a/arch/arm/configs/omap2plus_defconfig b/arch/arm/configs/omap2p= lus_defconfig index 0464f6552169b..ae2883d3ff0ea 100644 --- a/arch/arm/configs/omap2plus_defconfig +++ b/arch/arm/configs/omap2plus_defconfig @@ -702,11 +702,10 @@ CONFIG_NFS_V3_ACL=3Dy CONFIG_NFS_V4=3Dy CONFIG_ROOT_NFS=3Dy CONFIG_NLS_CODEPAGE_437=3Dy CONFIG_NLS_ISO8859_1=3Dy CONFIG_SECURITY=3Dy -CONFIG_CRYPTO_MICHAEL_MIC=3Dy CONFIG_CRYPTO_GHASH_ARM_CE=3Dm CONFIG_CRYPTO_AES=3Dm CONFIG_CRYPTO_AES_ARM_BS=3Dm CONFIG_CRYPTO_DEV_OMAP=3Dm CONFIG_CRYPTO_DEV_OMAP_SHAM=3Dm diff --git a/arch/arm/configs/spitz_defconfig b/arch/arm/configs/spitz_defc= onfig index c130af6d44d48..f116a01c3f5f1 100644 --- a/arch/arm/configs/spitz_defconfig +++ b/arch/arm/configs/spitz_defconfig @@ -228,11 +228,10 @@ CONFIG_CRYPTO_KHAZAD=3Dm CONFIG_CRYPTO_SERPENT=3Dm CONFIG_CRYPTO_TEA=3Dm CONFIG_CRYPTO_TWOFISH=3Dm CONFIG_CRYPTO_HMAC=3Dy CONFIG_CRYPTO_MD4=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_SHA512=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_FONTS=3Dy CONFIG_FONT_8x8=3Dy CONFIG_FONT_8x16=3Dy diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig index b67d5b1fc45b0..a2a5884f0ac82 100644 --- a/arch/arm64/configs/defconfig +++ b/arch/arm64/configs/defconfig @@ -1912,11 +1912,10 @@ CONFIG_NLS_ISO8859_1=3Dy CONFIG_SECURITY=3Dy CONFIG_CRYPTO_USER=3Dy CONFIG_CRYPTO_CHACHA20=3Dm CONFIG_CRYPTO_BENCHMARK=3Dm CONFIG_CRYPTO_ECHAINIV=3Dy -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_SHA3=3Dm CONFIG_CRYPTO_USER_API_RNG=3Dm CONFIG_CRYPTO_GHASH_ARM64_CE=3Dy CONFIG_CRYPTO_SM3_ARM64_CE=3Dm CONFIG_CRYPTO_AES_ARM64_CE_BLK=3Dy diff --git a/arch/m68k/configs/amiga_defconfig b/arch/m68k/configs/amiga_de= fconfig index 31d16cba9879f..c4230232634a3 100644 --- a/arch/m68k/configs/amiga_defconfig +++ b/arch/m68k/configs/amiga_defconfig @@ -576,11 +576,10 @@ CONFIG_CRYPTO_HCTR2=3Dm CONFIG_CRYPTO_LRW=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_XTS=3Dm CONFIG_CRYPTO_AEGIS128=3Dm CONFIG_CRYPTO_MD4=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_RMD160=3Dm CONFIG_CRYPTO_SHA1=3Dm CONFIG_CRYPTO_SM3_GENERIC=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_XCBC=3Dm diff --git a/arch/m68k/configs/apollo_defconfig b/arch/m68k/configs/apollo_= defconfig index c0c419ec9a9e9..740edd4f3ca14 100644 --- a/arch/m68k/configs/apollo_defconfig +++ b/arch/m68k/configs/apollo_defconfig @@ -533,11 +533,10 @@ CONFIG_CRYPTO_HCTR2=3Dm CONFIG_CRYPTO_LRW=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_XTS=3Dm CONFIG_CRYPTO_AEGIS128=3Dm CONFIG_CRYPTO_MD4=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_RMD160=3Dm CONFIG_CRYPTO_SHA1=3Dm CONFIG_CRYPTO_SM3_GENERIC=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_XCBC=3Dm diff --git a/arch/m68k/configs/atari_defconfig b/arch/m68k/configs/atari_de= fconfig index 2b7547ecc4c41..1773533ead702 100644 --- a/arch/m68k/configs/atari_defconfig +++ b/arch/m68k/configs/atari_defconfig @@ -553,11 +553,10 @@ CONFIG_CRYPTO_HCTR2=3Dm CONFIG_CRYPTO_LRW=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_XTS=3Dm CONFIG_CRYPTO_AEGIS128=3Dm CONFIG_CRYPTO_MD4=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_RMD160=3Dm CONFIG_CRYPTO_SHA1=3Dm CONFIG_CRYPTO_SM3_GENERIC=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_XCBC=3Dm diff --git a/arch/m68k/configs/bvme6000_defconfig b/arch/m68k/configs/bvme6= 000_defconfig index 0b63787cff0da..6aaf126a646ea 100644 --- a/arch/m68k/configs/bvme6000_defconfig +++ b/arch/m68k/configs/bvme6000_defconfig @@ -525,11 +525,10 @@ CONFIG_CRYPTO_HCTR2=3Dm CONFIG_CRYPTO_LRW=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_XTS=3Dm CONFIG_CRYPTO_AEGIS128=3Dm CONFIG_CRYPTO_MD4=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_RMD160=3Dm CONFIG_CRYPTO_SHA1=3Dm CONFIG_CRYPTO_SM3_GENERIC=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_XCBC=3Dm diff --git a/arch/m68k/configs/hp300_defconfig b/arch/m68k/configs/hp300_de= fconfig index 308836b60bba4..9a2076458de8f 100644 --- a/arch/m68k/configs/hp300_defconfig +++ b/arch/m68k/configs/hp300_defconfig @@ -535,11 +535,10 @@ CONFIG_CRYPTO_HCTR2=3Dm CONFIG_CRYPTO_LRW=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_XTS=3Dm CONFIG_CRYPTO_AEGIS128=3Dm CONFIG_CRYPTO_MD4=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_RMD160=3Dm CONFIG_CRYPTO_SHA1=3Dm CONFIG_CRYPTO_SM3_GENERIC=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_XCBC=3Dm diff --git a/arch/m68k/configs/mac_defconfig b/arch/m68k/configs/mac_defcon= fig index 97e108c0d24f2..76bac1bedf1c6 100644 --- a/arch/m68k/configs/mac_defconfig +++ b/arch/m68k/configs/mac_defconfig @@ -552,11 +552,10 @@ CONFIG_CRYPTO_HCTR2=3Dm CONFIG_CRYPTO_LRW=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_XTS=3Dm CONFIG_CRYPTO_AEGIS128=3Dm CONFIG_CRYPTO_MD4=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_RMD160=3Dm CONFIG_CRYPTO_SHA1=3Dm CONFIG_CRYPTO_SM3_GENERIC=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_XCBC=3Dm diff --git a/arch/m68k/configs/multi_defconfig b/arch/m68k/configs/multi_de= fconfig index 7e9f83af9af46..9d3b9b9d0c15e 100644 --- a/arch/m68k/configs/multi_defconfig +++ b/arch/m68k/configs/multi_defconfig @@ -639,11 +639,10 @@ CONFIG_CRYPTO_HCTR2=3Dm CONFIG_CRYPTO_LRW=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_XTS=3Dm CONFIG_CRYPTO_AEGIS128=3Dm CONFIG_CRYPTO_MD4=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_RMD160=3Dm CONFIG_CRYPTO_SHA1=3Dm CONFIG_CRYPTO_SM3_GENERIC=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_XCBC=3Dm diff --git a/arch/m68k/configs/mvme147_defconfig b/arch/m68k/configs/mvme14= 7_defconfig index 2fe33271d2494..e705aff2fa200 100644 --- a/arch/m68k/configs/mvme147_defconfig +++ b/arch/m68k/configs/mvme147_defconfig @@ -525,11 +525,10 @@ CONFIG_CRYPTO_HCTR2=3Dm CONFIG_CRYPTO_LRW=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_XTS=3Dm CONFIG_CRYPTO_AEGIS128=3Dm CONFIG_CRYPTO_MD4=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_RMD160=3Dm CONFIG_CRYPTO_SHA1=3Dm CONFIG_CRYPTO_SM3_GENERIC=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_XCBC=3Dm diff --git a/arch/m68k/configs/mvme16x_defconfig b/arch/m68k/configs/mvme16= x_defconfig index 4308daaa7f74c..286f7c949fcb2 100644 --- a/arch/m68k/configs/mvme16x_defconfig +++ b/arch/m68k/configs/mvme16x_defconfig @@ -526,11 +526,10 @@ CONFIG_CRYPTO_HCTR2=3Dm CONFIG_CRYPTO_LRW=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_XTS=3Dm CONFIG_CRYPTO_AEGIS128=3Dm CONFIG_CRYPTO_MD4=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_RMD160=3Dm CONFIG_CRYPTO_SHA1=3Dm CONFIG_CRYPTO_SM3_GENERIC=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_XCBC=3Dm diff --git a/arch/m68k/configs/q40_defconfig b/arch/m68k/configs/q40_defcon= fig index 36eb29ec54eeb..3cedc6a76bc9f 100644 --- a/arch/m68k/configs/q40_defconfig +++ b/arch/m68k/configs/q40_defconfig @@ -542,11 +542,10 @@ CONFIG_CRYPTO_HCTR2=3Dm CONFIG_CRYPTO_LRW=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_XTS=3Dm CONFIG_CRYPTO_AEGIS128=3Dm CONFIG_CRYPTO_MD4=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_RMD160=3Dm CONFIG_CRYPTO_SHA1=3Dm CONFIG_CRYPTO_SM3_GENERIC=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_XCBC=3Dm diff --git a/arch/m68k/configs/sun3_defconfig b/arch/m68k/configs/sun3_defc= onfig index 524a89fa69531..91c6060f42922 100644 --- a/arch/m68k/configs/sun3_defconfig +++ b/arch/m68k/configs/sun3_defconfig @@ -523,11 +523,10 @@ CONFIG_CRYPTO_HCTR2=3Dm CONFIG_CRYPTO_LRW=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_XTS=3Dm CONFIG_CRYPTO_AEGIS128=3Dm CONFIG_CRYPTO_MD4=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_RMD160=3Dm CONFIG_CRYPTO_SHA1=3Dm CONFIG_CRYPTO_SM3_GENERIC=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_XCBC=3Dm diff --git a/arch/m68k/configs/sun3x_defconfig b/arch/m68k/configs/sun3x_de= fconfig index f4fbc65c52d9a..8bb0ac877f652 100644 --- a/arch/m68k/configs/sun3x_defconfig +++ b/arch/m68k/configs/sun3x_defconfig @@ -523,11 +523,10 @@ CONFIG_CRYPTO_HCTR2=3Dm CONFIG_CRYPTO_LRW=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_XTS=3Dm CONFIG_CRYPTO_AEGIS128=3Dm CONFIG_CRYPTO_MD4=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_RMD160=3Dm CONFIG_CRYPTO_SHA1=3Dm CONFIG_CRYPTO_SM3_GENERIC=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_XCBC=3Dm diff --git a/arch/mips/configs/bigsur_defconfig b/arch/mips/configs/bigsur_= defconfig index 349e9e0b4f547..3b64e151e187f 100644 --- a/arch/mips/configs/bigsur_defconfig +++ b/arch/mips/configs/bigsur_defconfig @@ -220,11 +220,10 @@ CONFIG_CRYPTO_LRW=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_XTS=3Dm CONFIG_CRYPTO_HMAC=3Dy CONFIG_CRYPTO_XCBC=3Dm CONFIG_CRYPTO_MD4=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_RMD160=3Dm CONFIG_CRYPTO_SHA512=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_ANUBIS=3Dm CONFIG_CRYPTO_BLOWFISH=3Dm diff --git a/arch/mips/configs/decstation_64_defconfig b/arch/mips/configs/= decstation_64_defconfig index dad98c5752928..7c43352fac6bd 100644 --- a/arch/mips/configs/decstation_64_defconfig +++ b/arch/mips/configs/decstation_64_defconfig @@ -178,11 +178,10 @@ CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_XTS=3Dm CONFIG_CRYPTO_CMAC=3Dm CONFIG_CRYPTO_XCBC=3Dm CONFIG_CRYPTO_CRC32=3Dm CONFIG_CRYPTO_MD4=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_RMD160=3Dm CONFIG_CRYPTO_SHA512=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_ANUBIS=3Dm CONFIG_CRYPTO_ARC4=3Dm diff --git a/arch/mips/configs/decstation_defconfig b/arch/mips/configs/dec= station_defconfig index 4e1b51a4ad900..aee10274f0488 100644 --- a/arch/mips/configs/decstation_defconfig +++ b/arch/mips/configs/decstation_defconfig @@ -173,11 +173,10 @@ CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_XTS=3Dm CONFIG_CRYPTO_CMAC=3Dm CONFIG_CRYPTO_XCBC=3Dm CONFIG_CRYPTO_CRC32=3Dm CONFIG_CRYPTO_MD4=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_RMD160=3Dm CONFIG_CRYPTO_SHA512=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_ANUBIS=3Dm CONFIG_CRYPTO_ARC4=3Dm diff --git a/arch/mips/configs/decstation_r4k_defconfig b/arch/mips/configs= /decstation_r4k_defconfig index 4e550dffc23df..a1698049aa7a7 100644 --- a/arch/mips/configs/decstation_r4k_defconfig +++ b/arch/mips/configs/decstation_r4k_defconfig @@ -173,11 +173,10 @@ CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_XTS=3Dm CONFIG_CRYPTO_CMAC=3Dm CONFIG_CRYPTO_XCBC=3Dm CONFIG_CRYPTO_CRC32=3Dm CONFIG_CRYPTO_MD4=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_RMD160=3Dm CONFIG_CRYPTO_SHA512=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_ANUBIS=3Dm CONFIG_CRYPTO_ARC4=3Dm diff --git a/arch/mips/configs/gpr_defconfig b/arch/mips/configs/gpr_defcon= fig index 437ef6dc0b4c2..fdd28a89e3369 100644 --- a/arch/mips/configs/gpr_defconfig +++ b/arch/mips/configs/gpr_defconfig @@ -273,11 +273,10 @@ CONFIG_NLS_CODEPAGE_850=3Dy CONFIG_NLS_ISO8859_1=3Dy CONFIG_CRYPTO_AUTHENC=3Dm CONFIG_CRYPTO_BENCHMARK=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_MD4=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_SHA512=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_ANUBIS=3Dm CONFIG_CRYPTO_BLOWFISH=3Dm CONFIG_CRYPTO_CAST5=3Dm diff --git a/arch/mips/configs/ip32_defconfig b/arch/mips/configs/ip32_defc= onfig index 7568838eb08b2..68558d0d3f52c 100644 --- a/arch/mips/configs/ip32_defconfig +++ b/arch/mips/configs/ip32_defconfig @@ -157,11 +157,10 @@ CONFIG_CRYPTO_ECB=3Dy CONFIG_CRYPTO_LRW=3Dy CONFIG_CRYPTO_PCBC=3Dy CONFIG_CRYPTO_HMAC=3Dy CONFIG_CRYPTO_XCBC=3Dy CONFIG_CRYPTO_MD4=3Dy -CONFIG_CRYPTO_MICHAEL_MIC=3Dy CONFIG_CRYPTO_SHA1=3Dy CONFIG_CRYPTO_SHA256=3Dy CONFIG_CRYPTO_SHA512=3Dy CONFIG_CRYPTO_WP512=3Dy CONFIG_CRYPTO_ANUBIS=3Dy diff --git a/arch/mips/configs/lemote2f_defconfig b/arch/mips/configs/lemot= e2f_defconfig index 8d3f20ed19b56..eb3565a3f292c 100644 --- a/arch/mips/configs/lemote2f_defconfig +++ b/arch/mips/configs/lemote2f_defconfig @@ -306,11 +306,10 @@ CONFIG_CRYPTO_FCRYPT=3Dm CONFIG_CRYPTO_SERPENT=3Dm CONFIG_CRYPTO_TWOFISH=3Dm CONFIG_CRYPTO_LRW=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_XTS=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_RMD160=3Dm CONFIG_CRYPTO_SHA1=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_XCBC=3Dm CONFIG_CRYPTO_DEFLATE=3Dm diff --git a/arch/mips/configs/malta_qemu_32r6_defconfig b/arch/mips/config= s/malta_qemu_32r6_defconfig index accb471a1d93f..46a69e8984c5a 100644 --- a/arch/mips/configs/malta_qemu_32r6_defconfig +++ b/arch/mips/configs/malta_qemu_32r6_defconfig @@ -165,11 +165,10 @@ CONFIG_CIFS_XATTR=3Dy CONFIG_CIFS_POSIX=3Dy CONFIG_NLS_CODEPAGE_437=3Dm CONFIG_NLS_ISO8859_1=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_HMAC=3Dy -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_ANUBIS=3Dm CONFIG_CRYPTO_BLOWFISH=3Dm CONFIG_CRYPTO_CAST5=3Dm CONFIG_CRYPTO_CAST6=3Dm diff --git a/arch/mips/configs/maltaaprp_defconfig b/arch/mips/configs/malt= aaprp_defconfig index 6bda67c5f68f8..74a0e5f6a8860 100644 --- a/arch/mips/configs/maltaaprp_defconfig +++ b/arch/mips/configs/maltaaprp_defconfig @@ -166,11 +166,10 @@ CONFIG_CIFS_XATTR=3Dy CONFIG_CIFS_POSIX=3Dy CONFIG_NLS_CODEPAGE_437=3Dm CONFIG_NLS_ISO8859_1=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_HMAC=3Dy -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_ANUBIS=3Dm CONFIG_CRYPTO_BLOWFISH=3Dm CONFIG_CRYPTO_CAST5=3Dm CONFIG_CRYPTO_CAST6=3Dm diff --git a/arch/mips/configs/maltasmvp_defconfig b/arch/mips/configs/malt= asmvp_defconfig index e4082537f80fb..873bfc59623b8 100644 --- a/arch/mips/configs/maltasmvp_defconfig +++ b/arch/mips/configs/maltasmvp_defconfig @@ -167,11 +167,10 @@ CONFIG_CIFS_XATTR=3Dy CONFIG_CIFS_POSIX=3Dy CONFIG_NLS_CODEPAGE_437=3Dm CONFIG_NLS_ISO8859_1=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_HMAC=3Dy -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_ANUBIS=3Dm CONFIG_CRYPTO_BLOWFISH=3Dm CONFIG_CRYPTO_CAST5=3Dm CONFIG_CRYPTO_CAST6=3Dm diff --git a/arch/mips/configs/maltasmvp_eva_defconfig b/arch/mips/configs/= maltasmvp_eva_defconfig index 58f5af45fa983..c9230b2c4ea8d 100644 --- a/arch/mips/configs/maltasmvp_eva_defconfig +++ b/arch/mips/configs/maltasmvp_eva_defconfig @@ -169,11 +169,10 @@ CONFIG_CIFS_XATTR=3Dy CONFIG_CIFS_POSIX=3Dy CONFIG_NLS_CODEPAGE_437=3Dm CONFIG_NLS_ISO8859_1=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_HMAC=3Dy -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_ANUBIS=3Dm CONFIG_CRYPTO_BLOWFISH=3Dm CONFIG_CRYPTO_CAST5=3Dm CONFIG_CRYPTO_CAST6=3Dm diff --git a/arch/mips/configs/maltaup_defconfig b/arch/mips/configs/maltau= p_defconfig index 9bfef7de0d1cf..79fd3ccab3393 100644 --- a/arch/mips/configs/maltaup_defconfig +++ b/arch/mips/configs/maltaup_defconfig @@ -165,11 +165,10 @@ CONFIG_CIFS_XATTR=3Dy CONFIG_CIFS_POSIX=3Dy CONFIG_NLS_CODEPAGE_437=3Dm CONFIG_NLS_ISO8859_1=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_HMAC=3Dy -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_ANUBIS=3Dm CONFIG_CRYPTO_BLOWFISH=3Dm CONFIG_CRYPTO_CAST5=3Dm CONFIG_CRYPTO_CAST6=3Dm diff --git a/arch/mips/configs/mtx1_defconfig b/arch/mips/configs/mtx1_defc= onfig index 77050ae3945fc..930c0178cc670 100644 --- a/arch/mips/configs/mtx1_defconfig +++ b/arch/mips/configs/mtx1_defconfig @@ -661,11 +661,10 @@ CONFIG_NLS_KOI8_U=3Dm CONFIG_NLS_UTF8=3Dm CONFIG_CRYPTO_BENCHMARK=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_HMAC=3Dy CONFIG_CRYPTO_MD5=3Dy -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_ANUBIS=3Dm CONFIG_CRYPTO_BLOWFISH=3Dm CONFIG_CRYPTO_CAST6=3Dm CONFIG_CRYPTO_KHAZAD=3Dm diff --git a/arch/mips/configs/rm200_defconfig b/arch/mips/configs/rm200_de= fconfig index b507dc4dddd48..b1e67ff0c4f08 100644 --- a/arch/mips/configs/rm200_defconfig +++ b/arch/mips/configs/rm200_defconfig @@ -380,11 +380,10 @@ CONFIG_NLS_KOI8_U=3Dm CONFIG_NLS_UTF8=3Dm CONFIG_CRYPTO_LRW=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_HMAC=3Dy CONFIG_CRYPTO_XCBC=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_ANUBIS=3Dm CONFIG_CRYPTO_BLOWFISH=3Dm CONFIG_CRYPTO_CAMELLIA=3Dm CONFIG_CRYPTO_CAST6=3Dm diff --git a/arch/mips/configs/sb1250_swarm_defconfig b/arch/mips/configs/s= b1250_swarm_defconfig index ae2afff00e01a..4a25b8d3e5078 100644 --- a/arch/mips/configs/sb1250_swarm_defconfig +++ b/arch/mips/configs/sb1250_swarm_defconfig @@ -83,11 +83,10 @@ CONFIG_CRYPTO_LRW=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_XTS=3Dm CONFIG_CRYPTO_HMAC=3Dy CONFIG_CRYPTO_XCBC=3Dm CONFIG_CRYPTO_MD4=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_SHA512=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_BLOWFISH=3Dm CONFIG_CRYPTO_CAMELLIA=3Dm CONFIG_CRYPTO_CAST5=3Dm diff --git a/arch/parisc/configs/generic-32bit_defconfig b/arch/parisc/conf= igs/generic-32bit_defconfig index 5444ce6405f3a..a2cb2a7a02db8 100644 --- a/arch/parisc/configs/generic-32bit_defconfig +++ b/arch/parisc/configs/generic-32bit_defconfig @@ -257,11 +257,10 @@ CONFIG_CRYPTO_CAST6=3Dm CONFIG_CRYPTO_DES=3Dy CONFIG_CRYPTO_SERPENT=3Dm CONFIG_CRYPTO_TWOFISH=3Dm CONFIG_CRYPTO_HMAC=3Dy CONFIG_CRYPTO_MD5=3Dy -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_SHA1=3Dy CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_DEFLATE=3Dy CONFIG_FONTS=3Dy CONFIG_PRINTK_TIME=3Dy diff --git a/arch/parisc/configs/generic-64bit_defconfig b/arch/parisc/conf= igs/generic-64bit_defconfig index ce91f9d1fdbfb..4dd6cf6a2cb9b 100644 --- a/arch/parisc/configs/generic-64bit_defconfig +++ b/arch/parisc/configs/generic-64bit_defconfig @@ -285,11 +285,10 @@ CONFIG_NLS_UTF8=3Dm CONFIG_CRYPTO_FCRYPT=3Dm CONFIG_CRYPTO_ECB=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_MD4=3Dm CONFIG_CRYPTO_MD5=3Dy -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_DEFLATE=3Dm # CONFIG_CRYPTO_HW is not set CONFIG_PRINTK_TIME=3Dy CONFIG_DEBUG_KERNEL=3Dy CONFIG_STRIP_ASM_SYMS=3Dy diff --git a/arch/powerpc/configs/g5_defconfig b/arch/powerpc/configs/g5_de= fconfig index 428f17b455132..466f196ee8b29 100644 --- a/arch/powerpc/configs/g5_defconfig +++ b/arch/powerpc/configs/g5_defconfig @@ -236,11 +236,10 @@ CONFIG_DEBUG_KERNEL=3Dy CONFIG_DEBUG_MUTEXES=3Dy CONFIG_BOOTX_TEXT=3Dy CONFIG_CRYPTO_BENCHMARK=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_HMAC=3Dy -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_SHA512=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_ANUBIS=3Dm CONFIG_CRYPTO_BLOWFISH=3Dm CONFIG_CRYPTO_CAST5=3Dm diff --git a/arch/powerpc/configs/linkstation_defconfig b/arch/powerpc/conf= igs/linkstation_defconfig index b564f9e33a0df..31f84d08b6efe 100644 --- a/arch/powerpc/configs/linkstation_defconfig +++ b/arch/powerpc/configs/linkstation_defconfig @@ -127,11 +127,10 @@ CONFIG_NLS_ISO8859_1=3Dm CONFIG_NLS_UTF8=3Dm CONFIG_MAGIC_SYSRQ=3Dy CONFIG_DEBUG_KERNEL=3Dy CONFIG_DETECT_HUNG_TASK=3Dy CONFIG_CRYPTO_PCBC=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_SHA1=3Dm CONFIG_CRYPTO_BLOWFISH=3Dm CONFIG_CRYPTO_SERPENT=3Dm CONFIG_CRYPTO_TWOFISH=3Dm CONFIG_CRYPTO_DEFLATE=3Dm diff --git a/arch/powerpc/configs/mvme5100_defconfig b/arch/powerpc/configs= /mvme5100_defconfig index fa2b3b9c59452..c82754c14e15e 100644 --- a/arch/powerpc/configs/mvme5100_defconfig +++ b/arch/powerpc/configs/mvme5100_defconfig @@ -113,11 +113,10 @@ CONFIG_DEBUG_KERNEL=3Dy CONFIG_DETECT_HUNG_TASK=3Dy CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=3D20 CONFIG_CRYPTO_CBC=3Dy CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_MD5=3Dy -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_SHA1=3Dm CONFIG_CRYPTO_BLOWFISH=3Dm CONFIG_CRYPTO_DES=3Dy CONFIG_CRYPTO_SERPENT=3Dm CONFIG_CRYPTO_TWOFISH=3Dm diff --git a/arch/powerpc/configs/powernv_defconfig b/arch/powerpc/configs/= powernv_defconfig index 9ac746cfb4be3..675462b783200 100644 --- a/arch/powerpc/configs/powernv_defconfig +++ b/arch/powerpc/configs/powernv_defconfig @@ -317,11 +317,10 @@ CONFIG_FTR_FIXUP_SELFTEST=3Dy CONFIG_MSI_BITMAP_SELFTEST=3Dy CONFIG_XMON=3Dy CONFIG_CRYPTO_BENCHMARK=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_HMAC=3Dy -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_SHA256=3Dy CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_ANUBIS=3Dm CONFIG_CRYPTO_BLOWFISH=3Dm CONFIG_CRYPTO_CAST6=3Dm diff --git a/arch/powerpc/configs/ppc64_defconfig b/arch/powerpc/configs/pp= c64_defconfig index 2b0720f2753bc..e3e1cad668d9a 100644 --- a/arch/powerpc/configs/ppc64_defconfig +++ b/arch/powerpc/configs/ppc64_defconfig @@ -380,11 +380,10 @@ CONFIG_CRYPTO_BENCHMARK=3Dm CONFIG_CRYPTO_BLOWFISH=3Dm CONFIG_CRYPTO_CAST6=3Dm CONFIG_CRYPTO_SERPENT=3Dm CONFIG_CRYPTO_TWOFISH=3Dm CONFIG_CRYPTO_PCBC=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_SHA256=3Dy CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_LZO=3Dm CONFIG_CRYPTO_AES_GCM_P10=3Dm CONFIG_CRYPTO_DEV_NX=3Dy diff --git a/arch/powerpc/configs/ppc64e_defconfig b/arch/powerpc/configs/p= pc64e_defconfig index 90247b2a0ab0c..e877598fe3562 100644 --- a/arch/powerpc/configs/ppc64e_defconfig +++ b/arch/powerpc/configs/ppc64e_defconfig @@ -223,11 +223,10 @@ CONFIG_XMON=3Dy CONFIG_CRYPTO_BENCHMARK=3Dm CONFIG_CRYPTO_CCM=3Dm CONFIG_CRYPTO_GCM=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_HMAC=3Dy -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_SHA512=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_ANUBIS=3Dm CONFIG_CRYPTO_BLOWFISH=3Dm CONFIG_CRYPTO_CAST6=3Dm diff --git a/arch/powerpc/configs/ppc6xx_defconfig b/arch/powerpc/configs/p= pc6xx_defconfig index 3c08f46f3d41f..27d4350e8fdbe 100644 --- a/arch/powerpc/configs/ppc6xx_defconfig +++ b/arch/powerpc/configs/ppc6xx_defconfig @@ -1075,11 +1075,10 @@ CONFIG_CRYPTO_CTS=3Dm CONFIG_CRYPTO_LRW=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_XTS=3Dm CONFIG_CRYPTO_HMAC=3Dy CONFIG_CRYPTO_XCBC=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_RMD160=3Dm CONFIG_CRYPTO_SHA1=3Dy CONFIG_CRYPTO_SHA512=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_ANUBIS=3Dm diff --git a/arch/powerpc/configs/ps3_defconfig b/arch/powerpc/configs/ps3_= defconfig index 0b48d2b776c44..7cfae0b7b2f35 100644 --- a/arch/powerpc/configs/ps3_defconfig +++ b/arch/powerpc/configs/ps3_defconfig @@ -144,11 +144,10 @@ CONFIG_ROOT_NFS=3Dy CONFIG_CIFS=3Dm CONFIG_NLS=3Dy CONFIG_NLS_CODEPAGE_437=3Dy CONFIG_NLS_ISO8859_1=3Dy CONFIG_CRYPTO_PCBC=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_LZO=3Dm CONFIG_PRINTK_TIME=3Dy CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=3Dy CONFIG_MAGIC_SYSRQ=3Dy CONFIG_DEBUG_MEMORY_INIT=3Dy diff --git a/arch/s390/configs/debug_defconfig b/arch/s390/configs/debug_de= fconfig index 98fd0a2f51c6a..b74f96eec4658 100644 --- a/arch/s390/configs/debug_defconfig +++ b/arch/s390/configs/debug_defconfig @@ -792,11 +792,10 @@ CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_AEGIS128=3Dm CONFIG_CRYPTO_GCM=3Dy CONFIG_CRYPTO_SEQIV=3Dy CONFIG_CRYPTO_MD4=3Dm CONFIG_CRYPTO_MD5=3Dy -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_RMD160=3Dm CONFIG_CRYPTO_SHA3=3Dm CONFIG_CRYPTO_SM3_GENERIC=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_XCBC=3Dm diff --git a/arch/s390/configs/defconfig b/arch/s390/configs/defconfig index 0f4cedcab3cef..0c831481e43fd 100644 --- a/arch/s390/configs/defconfig +++ b/arch/s390/configs/defconfig @@ -776,11 +776,10 @@ CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_AEGIS128=3Dm CONFIG_CRYPTO_GCM=3Dy CONFIG_CRYPTO_SEQIV=3Dy CONFIG_CRYPTO_MD4=3Dm CONFIG_CRYPTO_MD5=3Dy -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_RMD160=3Dm CONFIG_CRYPTO_SHA3=3Dm CONFIG_CRYPTO_SM3_GENERIC=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_XCBC=3Dm diff --git a/arch/sh/configs/sh2007_defconfig b/arch/sh/configs/sh2007_defc= onfig index e32d2ce72699f..5d90804994857 100644 --- a/arch/sh/configs/sh2007_defconfig +++ b/arch/sh/configs/sh2007_defconfig @@ -168,11 +168,10 @@ CONFIG_CRYPTO_LRW=3Dy CONFIG_CRYPTO_PCBC=3Dy CONFIG_CRYPTO_XTS=3Dy CONFIG_CRYPTO_HMAC=3Dy CONFIG_CRYPTO_XCBC=3Dy CONFIG_CRYPTO_MD4=3Dy -CONFIG_CRYPTO_MICHAEL_MIC=3Dy CONFIG_CRYPTO_SHA1=3Dy CONFIG_CRYPTO_SHA256=3Dy CONFIG_CRYPTO_SHA512=3Dy CONFIG_CRYPTO_TGR192=3Dy CONFIG_CRYPTO_WP512=3Dy diff --git a/arch/sh/configs/titan_defconfig b/arch/sh/configs/titan_defcon= fig index 896e980d04e14..00863ecb228e8 100644 --- a/arch/sh/configs/titan_defconfig +++ b/arch/sh/configs/titan_defconfig @@ -244,11 +244,10 @@ CONFIG_MAGIC_SYSRQ=3Dy CONFIG_DEBUG_KERNEL=3Dy # CONFIG_DEBUG_BUGVERBOSE is not set CONFIG_CRYPTO_NULL=3Dm CONFIG_CRYPTO_ECB=3Dy CONFIG_CRYPTO_MD4=3Dm -CONFIG_CRYPTO_MICHAEL_MIC=3Dy CONFIG_CRYPTO_SHA256=3Dm CONFIG_CRYPTO_SHA512=3Dm CONFIG_CRYPTO_TGR192=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_AES=3Dy diff --git a/arch/sh/configs/ul2_defconfig b/arch/sh/configs/ul2_defconfig index 0d1c858754dbb..00a37944b043c 100644 --- a/arch/sh/configs/ul2_defconfig +++ b/arch/sh/configs/ul2_defconfig @@ -77,6 +77,5 @@ CONFIG_ROOT_NFS=3Dy CONFIG_NFSD=3Dy CONFIG_NLS_CODEPAGE_437=3Dy CONFIG_NLS_CODEPAGE_932=3Dy CONFIG_NLS_ISO8859_1=3Dy # CONFIG_ENABLE_MUST_CHECK is not set -CONFIG_CRYPTO_MICHAEL_MIC=3Dy diff --git a/arch/sparc/configs/sparc32_defconfig b/arch/sparc/configs/spar= c32_defconfig index e021ecfb5a771..48d834acafb4a 100644 --- a/arch/sparc/configs/sparc32_defconfig +++ b/arch/sparc/configs/sparc32_defconfig @@ -80,11 +80,10 @@ CONFIG_KGDB=3Dy CONFIG_KGDB_TESTS=3Dy CONFIG_CRYPTO_NULL=3Dm CONFIG_CRYPTO_ECB=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_MD4=3Dy -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_SHA256=3Dm CONFIG_CRYPTO_SHA512=3Dm CONFIG_CRYPTO_AES=3Dm CONFIG_CRYPTO_ARC4=3Dm CONFIG_CRYPTO_BLOWFISH=3Dm diff --git a/arch/sparc/configs/sparc64_defconfig b/arch/sparc/configs/spar= c64_defconfig index 9f3f41246ae6d..632081a262bae 100644 --- a/arch/sparc/configs/sparc64_defconfig +++ b/arch/sparc/configs/sparc64_defconfig @@ -208,11 +208,10 @@ CONFIG_CRYPTO_BENCHMARK=3Dm CONFIG_CRYPTO_LRW=3Dm CONFIG_CRYPTO_PCBC=3Dm CONFIG_CRYPTO_XTS=3Dm CONFIG_CRYPTO_XCBC=3Dy CONFIG_CRYPTO_MD4=3Dy -CONFIG_CRYPTO_MICHAEL_MIC=3Dm CONFIG_CRYPTO_SHA256=3Dm CONFIG_CRYPTO_SHA512=3Dm CONFIG_CRYPTO_TGR192=3Dm CONFIG_CRYPTO_WP512=3Dm CONFIG_CRYPTO_AES=3Dm diff --git a/crypto/Kconfig b/crypto/Kconfig index b4bb85e8e2261..769aef52a7851 100644 --- a/crypto/Kconfig +++ b/crypto/Kconfig @@ -914,22 +914,10 @@ config CRYPTO_MD5 select CRYPTO_HASH select CRYPTO_LIB_MD5 help MD5 message digest algorithm (RFC1321), including HMAC support. =20 -config CRYPTO_MICHAEL_MIC - tristate "Michael MIC" - select CRYPTO_HASH - help - Michael MIC (Message Integrity Code) (IEEE 802.11i) - - Defined by the IEEE 802.11i TKIP (Temporal Key Integrity Protocol), - known as WPA (Wif-Fi Protected Access). - - This algorithm is required for TKIP, but it should not be used for - other purposes because of the weakness of the algorithm. - config CRYPTO_RMD160 tristate "RIPEMD-160" select CRYPTO_HASH help RIPEMD-160 hash function (ISO/IEC 10118-3) diff --git a/crypto/Makefile b/crypto/Makefile index 04e269117589a..aa35ba03222f7 100644 --- a/crypto/Makefile +++ b/crypto/Makefile @@ -148,11 +148,10 @@ obj-$(CONFIG_CRYPTO_ANUBIS) +=3D anubis.o obj-$(CONFIG_CRYPTO_SEED) +=3D seed.o obj-$(CONFIG_CRYPTO_ARIA) +=3D aria_generic.o obj-$(CONFIG_CRYPTO_CHACHA20) +=3D chacha.o CFLAGS_chacha.o +=3D -DARCH=3D$(ARCH) obj-$(CONFIG_CRYPTO_DEFLATE) +=3D deflate.o -obj-$(CONFIG_CRYPTO_MICHAEL_MIC) +=3D michael_mic.o obj-$(CONFIG_CRYPTO_CRC32C) +=3D crc32c-cryptoapi.o crc32c-cryptoapi-y :=3D crc32c.o obj-$(CONFIG_CRYPTO_CRC32) +=3D crc32-cryptoapi.o crc32-cryptoapi-y :=3D crc32.o obj-$(CONFIG_CRYPTO_AUTHENC) +=3D authenc.o authencesn.o diff --git a/crypto/michael_mic.c b/crypto/michael_mic.c deleted file mode 100644 index 69ad35f524d7b..0000000000000 --- a/crypto/michael_mic.c +++ /dev/null @@ -1,176 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* - * Cryptographic API - * - * Michael MIC (IEEE 802.11i/TKIP) keyed digest - * - * Copyright (c) 2004 Jouni Malinen - */ -#include -#include -#include -#include -#include -#include - - -struct michael_mic_ctx { - u32 l, r; -}; - -struct michael_mic_desc_ctx { - __le32 pending; - size_t pending_len; - - u32 l, r; -}; - -static inline u32 xswap(u32 val) -{ - return ((val & 0x00ff00ff) << 8) | ((val & 0xff00ff00) >> 8); -} - - -#define michael_block(l, r) \ -do { \ - r ^=3D rol32(l, 17); \ - l +=3D r; \ - r ^=3D xswap(l); \ - l +=3D r; \ - r ^=3D rol32(l, 3); \ - l +=3D r; \ - r ^=3D ror32(l, 2); \ - l +=3D r; \ -} while (0) - - -static int michael_init(struct shash_desc *desc) -{ - struct michael_mic_desc_ctx *mctx =3D shash_desc_ctx(desc); - struct michael_mic_ctx *ctx =3D crypto_shash_ctx(desc->tfm); - mctx->pending_len =3D 0; - mctx->l =3D ctx->l; - mctx->r =3D ctx->r; - - return 0; -} - - -static int michael_update(struct shash_desc *desc, const u8 *data, - unsigned int len) -{ - struct michael_mic_desc_ctx *mctx =3D shash_desc_ctx(desc); - - if (mctx->pending_len) { - int flen =3D 4 - mctx->pending_len; - if (flen > len) - flen =3D len; - memcpy((u8 *)&mctx->pending + mctx->pending_len, data, flen); - mctx->pending_len +=3D flen; - data +=3D flen; - len -=3D flen; - - if (mctx->pending_len < 4) - return 0; - - mctx->l ^=3D le32_to_cpu(mctx->pending); - michael_block(mctx->l, mctx->r); - mctx->pending_len =3D 0; - } - - while (len >=3D 4) { - mctx->l ^=3D get_unaligned_le32(data); - michael_block(mctx->l, mctx->r); - data +=3D 4; - len -=3D 4; - } - - if (len > 0) { - mctx->pending_len =3D len; - memcpy(&mctx->pending, data, len); - } - - return 0; -} - - -static int michael_final(struct shash_desc *desc, u8 *out) -{ - struct michael_mic_desc_ctx *mctx =3D shash_desc_ctx(desc); - u8 *data =3D (u8 *)&mctx->pending; - - /* Last block and padding (0x5a, 4..7 x 0) */ - switch (mctx->pending_len) { - case 0: - mctx->l ^=3D 0x5a; - break; - case 1: - mctx->l ^=3D data[0] | 0x5a00; - break; - case 2: - mctx->l ^=3D data[0] | (data[1] << 8) | 0x5a0000; - break; - case 3: - mctx->l ^=3D data[0] | (data[1] << 8) | (data[2] << 16) | - 0x5a000000; - break; - } - michael_block(mctx->l, mctx->r); - /* l ^=3D 0; */ - michael_block(mctx->l, mctx->r); - - put_unaligned_le32(mctx->l, out); - put_unaligned_le32(mctx->r, out + 4); - - return 0; -} - - -static int michael_setkey(struct crypto_shash *tfm, const u8 *key, - unsigned int keylen) -{ - struct michael_mic_ctx *mctx =3D crypto_shash_ctx(tfm); - - if (keylen !=3D 8) - return -EINVAL; - - mctx->l =3D get_unaligned_le32(key); - mctx->r =3D get_unaligned_le32(key + 4); - return 0; -} - -static struct shash_alg alg =3D { - .digestsize =3D 8, - .setkey =3D michael_setkey, - .init =3D michael_init, - .update =3D michael_update, - .final =3D michael_final, - .descsize =3D sizeof(struct michael_mic_desc_ctx), - .base =3D { - .cra_name =3D "michael_mic", - .cra_driver_name =3D "michael_mic-generic", - .cra_blocksize =3D 8, - .cra_ctxsize =3D sizeof(struct michael_mic_ctx), - .cra_module =3D THIS_MODULE, - } -}; - -static int __init michael_mic_init(void) -{ - return crypto_register_shash(&alg); -} - - -static void __exit michael_mic_exit(void) -{ - crypto_unregister_shash(&alg); -} - - -module_init(michael_mic_init); -module_exit(michael_mic_exit); - -MODULE_LICENSE("GPL v2"); -MODULE_DESCRIPTION("Michael MIC"); -MODULE_AUTHOR("Jouni Malinen "); -MODULE_ALIAS_CRYPTO("michael_mic"); diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c index aded375461374..24f0ccc767961 100644 --- a/crypto/tcrypt.c +++ b/crypto/tcrypt.c @@ -1555,14 +1555,10 @@ static int do_test(const char *alg, u32 type, u32 m= ask, int m, u32 num_mb) =20 case 16: ret =3D min(ret, tcrypt_test("ecb(arc4)")); break; =20 - case 17: - ret =3D min(ret, tcrypt_test("michael_mic")); - break; - case 18: ret =3D min(ret, tcrypt_test("crc32c")); break; =20 case 19: diff --git a/crypto/testmgr.c b/crypto/testmgr.c index 4985411dedaec..d5c38683bf46f 100644 --- a/crypto/testmgr.c +++ b/crypto/testmgr.c @@ -5195,16 +5195,10 @@ static const struct alg_test_desc alg_test_descs[] = =3D { .generic_driver =3D "md5-lib", .test =3D alg_test_hash, .suite =3D { .hash =3D __VECS(md5_tv_template) } - }, { - .alg =3D "michael_mic", - .test =3D alg_test_hash, - .suite =3D { - .hash =3D __VECS(michael_mic_tv_template) - } }, { .alg =3D "p1363(ecdsa-nist-p192)", .test =3D alg_test_null, }, { .alg =3D "p1363(ecdsa-nist-p256)", diff --git a/crypto/testmgr.h b/crypto/testmgr.h index 1c69c11c0cdb4..11911bff5f793 100644 --- a/crypto/testmgr.h +++ b/crypto/testmgr.h @@ -32806,60 +32806,10 @@ static const struct comp_testvec lzorle_decomp_tv= _template[] =3D { .output =3D "Join us now and share the software " "Join us now and share the software ", }, }; =20 -/* - * Michael MIC test vectors from IEEE 802.11i - */ -#define MICHAEL_MIC_TEST_VECTORS 6 - -static const struct hash_testvec michael_mic_tv_template[] =3D { - { - .key =3D "\x00\x00\x00\x00\x00\x00\x00\x00", - .ksize =3D 8, - .plaintext =3D zeroed_string, - .psize =3D 0, - .digest =3D "\x82\x92\x5c\x1c\xa1\xd1\x30\xb8", - }, - { - .key =3D "\x82\x92\x5c\x1c\xa1\xd1\x30\xb8", - .ksize =3D 8, - .plaintext =3D "M", - .psize =3D 1, - .digest =3D "\x43\x47\x21\xca\x40\x63\x9b\x3f", - }, - { - .key =3D "\x43\x47\x21\xca\x40\x63\x9b\x3f", - .ksize =3D 8, - .plaintext =3D "Mi", - .psize =3D 2, - .digest =3D "\xe8\xf9\xbe\xca\xe9\x7e\x5d\x29", - }, - { - .key =3D "\xe8\xf9\xbe\xca\xe9\x7e\x5d\x29", - .ksize =3D 8, - .plaintext =3D "Mic", - .psize =3D 3, - .digest =3D "\x90\x03\x8f\xc6\xcf\x13\xc1\xdb", - }, - { - .key =3D "\x90\x03\x8f\xc6\xcf\x13\xc1\xdb", - .ksize =3D 8, - .plaintext =3D "Mich", - .psize =3D 4, - .digest =3D "\xd5\x5e\x10\x05\x10\x12\x89\x86", - }, - { - .key =3D "\xd5\x5e\x10\x05\x10\x12\x89\x86", - .ksize =3D 8, - .plaintext =3D "Michael", - .psize =3D 7, - .digest =3D "\x0a\x94\x2b\x12\x4e\xca\xa5\x46", - } -}; - /* * CRC32 test vectors */ static const struct hash_testvec crc32_tv_template[] =3D { { --=20 2.53.0