move to upstream fix for arm crypto ghash issue
This commit is contained in:
parent
48df0906cd
commit
daabca5f6f
File diff suppressed because it is too large
Load Diff
142
crypto-ghash-fix-unaligned-memory-access-in-ghash_setkey.patch
Normal file
142
crypto-ghash-fix-unaligned-memory-access-in-ghash_setkey.patch
Normal file
@ -0,0 +1,142 @@
|
||||
From patchwork Thu May 30 17:50:39 2019
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
X-Patchwork-Submitter: Eric Biggers <ebiggers@kernel.org>
|
||||
X-Patchwork-Id: 10969147
|
||||
Return-Path:
|
||||
<linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org>
|
||||
Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org
|
||||
[172.30.200.125])
|
||||
by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 39D0814C0
|
||||
for <patchwork-linux-arm@patchwork.kernel.org>;
|
||||
Thu, 30 May 2019 17:51:56 +0000 (UTC)
|
||||
Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1])
|
||||
by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 28A9728C00
|
||||
for <patchwork-linux-arm@patchwork.kernel.org>;
|
||||
Thu, 30 May 2019 17:51:56 +0000 (UTC)
|
||||
Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486)
|
||||
id 1C78028C0A; Thu, 30 May 2019 17:51:56 +0000 (UTC)
|
||||
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on
|
||||
pdx-wl-mail.web.codeaurora.org
|
||||
X-Spam-Level:
|
||||
X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,DKIM_SIGNED,
|
||||
DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1
|
||||
Received: from bombadil.infradead.org (bombadil.infradead.org
|
||||
[198.137.202.133])
|
||||
(using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits))
|
||||
(No client certificate requested)
|
||||
by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id B197628C0C
|
||||
for <patchwork-linux-arm@patchwork.kernel.org>;
|
||||
Thu, 30 May 2019 17:51:55 +0000 (UTC)
|
||||
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
|
||||
d=lists.infradead.org; s=bombadil.20170209; h=Sender:
|
||||
Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:
|
||||
List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To
|
||||
:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:
|
||||
Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:
|
||||
List-Owner; bh=CNSxoFvnqNOKLw5IF2bRVNsbx0OBmDMrD3iLmG0w6/0=; b=Ut1/1rp209fwMB
|
||||
BGNwLQoUhOy0VzSHRlu9bynYddVY64Hme75tVBdecGOwpejga50uQ/qqonHcT3zY9UNHPxqnWJkCc
|
||||
+cCFO73krVE6DPfSoeSSgYyEFxj1vKbrqvaZEmJMf63dXY+kDQQUFaKrXemNEwe1w4IGhfvH0kdPX
|
||||
P5qiWS+vtPES3xiX9Ib4CoHYfZK1PK15mpoa3UdxsDUDCbWh0JB6PDhA8Z4hyKk05QDdHyeZ0IW/m
|
||||
Y+xI4v4HT4nNquQDAZ6pcvD5eo3z+F7JrIWxliKzK4tpbnuufutuh1uEgZE8xkY4nKNPN8oefkcuK
|
||||
ItWkVJ8LzibR3g7ToZcg==;
|
||||
Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org)
|
||||
by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux))
|
||||
id 1hWPDQ-0000dL-32; Thu, 30 May 2019 17:51:48 +0000
|
||||
Received: from mail.kernel.org ([198.145.29.99])
|
||||
by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux))
|
||||
id 1hWPDN-0000d1-N0
|
||||
for linux-arm-kernel@lists.infradead.org; Thu, 30 May 2019 17:51:46 +0000
|
||||
Received: from ebiggers-linuxstation.mtv.corp.google.com (unknown
|
||||
[104.132.1.77])
|
||||
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
|
||||
(No client certificate requested)
|
||||
by mail.kernel.org (Postfix) with ESMTPSA id 298D925EBD;
|
||||
Thu, 30 May 2019 17:51:45 +0000 (UTC)
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
|
||||
s=default; t=1559238705;
|
||||
bh=i3XOSxLt0gd25Lvgu66PwiGPL7WdnuFqSIPbfSPRNvs=;
|
||||
h=From:To:Cc:Subject:Date:From;
|
||||
b=rdLpfIoVgc/waPa/9jjiNG++x8Ie13iqFnrqFxGMBVvq5z5bOtk5kqjgmoUd9EqNh
|
||||
xaTAvep02q+Ww1Bxy9imO7Z98/KYj5jqMwhBXRwW10U8QdMwnmPyXc4nz19bRSP2XJ
|
||||
Xaix7O+I2Qi5LiV+n1IAEWeN19gjYBYLSopFY8Cw=
|
||||
From: Eric Biggers <ebiggers@kernel.org>
|
||||
To: linux-crypto@vger.kernel.org
|
||||
Subject: [PATCH] crypto: ghash - fix unaligned memory access in ghash_setkey()
|
||||
Date: Thu, 30 May 2019 10:50:39 -0700
|
||||
Message-Id: <20190530175039.195574-1-ebiggers@kernel.org>
|
||||
X-Mailer: git-send-email 2.22.0.rc1.257.g3120a18244-goog
|
||||
MIME-Version: 1.0
|
||||
X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3
|
||||
X-CRM114-CacheID: sfid-20190530_105145_765710_080A4ED4
|
||||
X-CRM114-Status: GOOD ( 12.92 )
|
||||
X-BeenThere: linux-arm-kernel@lists.infradead.org
|
||||
X-Mailman-Version: 2.1.21
|
||||
Precedence: list
|
||||
List-Id: <linux-arm-kernel.lists.infradead.org>
|
||||
List-Unsubscribe:
|
||||
<http://lists.infradead.org/mailman/options/linux-arm-kernel>,
|
||||
<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>
|
||||
List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/>
|
||||
List-Post: <mailto:linux-arm-kernel@lists.infradead.org>
|
||||
List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>
|
||||
List-Subscribe:
|
||||
<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,
|
||||
<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>
|
||||
Cc: stable@vger.kernel.org, Peter Robinson <pbrobinson@gmail.com>,
|
||||
linux-arm-kernel@lists.infradead.org
|
||||
Content-Type: text/plain; charset="us-ascii"
|
||||
Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org>
|
||||
Errors-To:
|
||||
linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org
|
||||
X-Virus-Scanned: ClamAV using ClamSMTP
|
||||
|
||||
From: Eric Biggers <ebiggers@google.com>
|
||||
|
||||
Changing ghash_mod_init() to be subsys_initcall made it start running
|
||||
before the alignment fault handler has been installed on ARM. In kernel
|
||||
builds where the keys in the ghash test vectors happened to be
|
||||
misaligned in the kernel image, this exposed the longstanding bug that
|
||||
ghash_setkey() is incorrectly casting the key buffer (which can have any
|
||||
alignment) to be128 for passing to gf128mul_init_4k_lle().
|
||||
|
||||
Fix this by memcpy()ing the key to a temporary buffer.
|
||||
|
||||
Don't fix it by setting an alignmask on the algorithm instead because
|
||||
that would unnecessarily force alignment of the data too.
|
||||
|
||||
Fixes: 2cdc6899a88e ("crypto: ghash - Add GHASH digest algorithm for GCM")
|
||||
Reported-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Eric Biggers <ebiggers@google.com>
|
||||
---
|
||||
crypto/ghash-generic.c | 8 +++++++-
|
||||
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/crypto/ghash-generic.c b/crypto/ghash-generic.c
|
||||
index e6307935413c1..c8a347798eae6 100644
|
||||
--- a/crypto/ghash-generic.c
|
||||
+++ b/crypto/ghash-generic.c
|
||||
@@ -34,6 +34,7 @@ static int ghash_setkey(struct crypto_shash *tfm,
|
||||
const u8 *key, unsigned int keylen)
|
||||
{
|
||||
struct ghash_ctx *ctx = crypto_shash_ctx(tfm);
|
||||
+ be128 k;
|
||||
|
||||
if (keylen != GHASH_BLOCK_SIZE) {
|
||||
crypto_shash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
|
||||
@@ -42,7 +43,12 @@ static int ghash_setkey(struct crypto_shash *tfm,
|
||||
|
||||
if (ctx->gf128)
|
||||
gf128mul_free_4k(ctx->gf128);
|
||||
- ctx->gf128 = gf128mul_init_4k_lle((be128 *)key);
|
||||
+
|
||||
+ BUILD_BUG_ON(sizeof(k) != GHASH_BLOCK_SIZE);
|
||||
+ memcpy(&k, key, GHASH_BLOCK_SIZE); /* avoid violating alignment rules */
|
||||
+ ctx->gf128 = gf128mul_init_4k_lle(&k);
|
||||
+ memzero_explicit(&k, GHASH_BLOCK_SIZE);
|
||||
+
|
||||
if (!ctx->gf128)
|
||||
return -ENOMEM;
|
||||
|
@ -579,7 +579,7 @@ Patch524: net-vhost_net-fix-possible-infinite-loop.patch
|
||||
Patch526: s390-mark-__cpacf_check_opcode-and-cpacf_query_func-as-__always_inline.patch
|
||||
Patch527: v2-powerpc-mm-mark-more-tlb-functions-as-__always_inline.patch
|
||||
|
||||
Patch530: 0001-Revert-crypto-run-initcalls-for-generic-implementati.patch
|
||||
Patch530: crypto-ghash-fix-unaligned-memory-access-in-ghash_setkey.patch
|
||||
|
||||
# END OF PATCH DEFINITIONS
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user