Received: by 2002:a25:f815:0:0:0:0:0 with SMTP id u21csp2233228ybd; Mon, 24 Jun 2019 03:01:54 -0700 (PDT) X-Google-Smtp-Source: APXvYqyQ4FvQHtSwYRUOcR7w/yAKkLai+sgA5/5Ja7WHEV8uVbPB3hS57FPYn22be4T010KRz1Wg X-Received: by 2002:a17:902:4201:: with SMTP id g1mr38997922pld.300.1561370514413; Mon, 24 Jun 2019 03:01:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561370514; cv=none; d=google.com; s=arc-20160816; b=0S7qf5rQSMEJdahDgMX61awiMQRQAf1Tc7vMHqYL/iSyl7Fg2WhTlIy+ed1RCdjZiC 2P8j5HRDBdAUKRTIMUclDM7S7MdAQTITsewhr00Tkoc6i9YlZM3Na7bPjIa+UhI6MRAZ 8PT6WuC2pSLfERs/uhcziKQK8Nvl7yYCIqfwSRkidKLj3Hh3lwllg8sW/E1kxKgLpxXN 9/nvVOXLCiVCeprXkBMx34vKxCt5OugNq5iK/+gC/YqLokdtXOIuodJud9JJsKsvZf6d YMifv3yvmhLdytm4zM13fXvvFUkv+OnX4EnkUAosu6UG3ha/KHHQG94J9wZRejIarQkt dfQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=Qg3SJq6dioFI17Jwlgs6ZGoyI3yqDznQLB32Y+xg/oE=; b=oN/FURUxEjRhkFWCRfuS2WF+b21EdOZv5ePFl8SfooKxzIuxElInOsh7xvsnHjJtQW C1hm1AmKDdQsI95DmoUJ0QdGdFQbOVoY0rrndCUYDqv+8gSwPMWME1c8TR44RGZm8mV6 G+s+EenUI4hMYI9jxr3L2M8khPAUPKsJDZsstRXXi0i0j4qtMlg1RekBkpOv/GTxwoV+ KnYDcX68t2KJQ2Ka/JEtdoaCcxaWuVR/qzb5bEslF9nmSyRajypUySmjAPvlMd7rqZ8s O9K5z5iSQhaWXKeo50Ds0Yjlryl4IRSpD+te696ZEVqw8wppW8DIubLMlXEiBWvmZE9I dHTQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=oKyvls+G; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 3si10123334pfp.288.2019.06.24.03.01.38; Mon, 24 Jun 2019 03:01:54 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=oKyvls+G; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728483AbfFXJ7j (ORCPT + 99 others); Mon, 24 Jun 2019 05:59:39 -0400 Received: from mail.kernel.org ([198.145.29.99]:58834 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728691AbfFXJ7i (ORCPT ); Mon, 24 Jun 2019 05:59:38 -0400 Received: from localhost (f4.8f.5177.ip4.static.sl-reverse.com [119.81.143.244]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 787E5214C6; Mon, 24 Jun 2019 09:59:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1561370376; bh=tLVZwVgEy3INWT+QDUG63JAAvvmORHsEoFCuqJI91d8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=oKyvls+G7wcnqIaBFC9e/IbzhuJwl2TNOwXCvLlWqKL/ok9EAWQU44R7v31eS+Ibe 55it9LzBTpNl6HVgXkVCkJEamMGseYFzgNHO18Q4fFCUgKyGzJXfEltsv0hnVDfgMk 8cQSpGr8agaoXEghbcaboeGzaXG8wlsKLnshtnNU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jouni Malinen , Johannes Berg Subject: [PATCH 4.14 51/51] mac80211: Do not use stack memory with scatterlist for GMAC Date: Mon, 24 Jun 2019 17:57:09 +0800 Message-Id: <20190624092311.567774680@linuxfoundation.org> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190624092305.919204959@linuxfoundation.org> References: <20190624092305.919204959@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Jouni Malinen commit a71fd9dac23613d96ba3c05619a8ef4fd6cdf9b9 upstream. ieee80211_aes_gmac() uses the mic argument directly in sg_set_buf() and that does not allow use of stack memory (e.g., BUG_ON() is hit in sg_set_buf() with CONFIG_DEBUG_SG). BIP GMAC TX side is fine for this since it can use the skb data buffer, but the RX side was using a stack variable for deriving the local MIC value to compare against the received one. Fix this by allocating heap memory for the mic buffer. This was found with hwsim test case ap_cipher_bip_gmac_128 hitting that BUG_ON() and kernel panic. Cc: stable@vger.kernel.org Signed-off-by: Jouni Malinen Signed-off-by: Johannes Berg Signed-off-by: Greg Kroah-Hartman --- net/mac80211/wpa.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) --- a/net/mac80211/wpa.c +++ b/net/mac80211/wpa.c @@ -1169,7 +1169,7 @@ ieee80211_crypto_aes_gmac_decrypt(struct struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); struct ieee80211_key *key = rx->key; struct ieee80211_mmie_16 *mmie; - u8 aad[GMAC_AAD_LEN], mic[GMAC_MIC_LEN], ipn[6], nonce[GMAC_NONCE_LEN]; + u8 aad[GMAC_AAD_LEN], *mic, ipn[6], nonce[GMAC_NONCE_LEN]; struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; if (!ieee80211_is_mgmt(hdr->frame_control)) @@ -1200,13 +1200,18 @@ ieee80211_crypto_aes_gmac_decrypt(struct memcpy(nonce, hdr->addr2, ETH_ALEN); memcpy(nonce + ETH_ALEN, ipn, 6); + mic = kmalloc(GMAC_MIC_LEN, GFP_ATOMIC); + if (!mic) + return RX_DROP_UNUSABLE; if (ieee80211_aes_gmac(key->u.aes_gmac.tfm, aad, nonce, skb->data + 24, skb->len - 24, mic) < 0 || crypto_memneq(mic, mmie->mic, sizeof(mmie->mic))) { key->u.aes_gmac.icverrors++; + kfree(mic); return RX_DROP_UNUSABLE; } + kfree(mic); } memcpy(key->u.aes_gmac.rx_pn, ipn, 6);