Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp2262473ybl; Sun, 19 Jan 2020 23:02:28 -0800 (PST) X-Google-Smtp-Source: APXvYqyNiYaNZUDRYkPED6iIruuaeZbkgqRf+HIbLegqYPCM8+gCLYk/PPEgmSiyMnSH3rTABls0 X-Received: by 2002:a05:6830:155a:: with SMTP id l26mr15282662otp.339.1579503748102; Sun, 19 Jan 2020 23:02:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1579503748; cv=none; d=google.com; s=arc-20160816; b=LlkjY1gQJvVAH80xPvHDQB1qLEBSTXURdNzuR7yljNxVnXQ/fSMyxmYYuP5Hm6rP6i //rRDKTwCsc+VSMdRjOE09AWGlGNXEcKofsDKKeMvlTkaTloCIQC4F8MkA/KU8bD1CMP 6KK0ZC7JFcSkxNnQ9p1WCdsCfyGi+YmU7MYjmVgJyuW1GAHki7Do4SSP8GPuYiMvHmGT ydXrBiKR9cykFAbCB3jSF3ZSInI21dxS3/hUHWJsbDxRrEXSavDYyEReqvJ1mJiqWwzN UF6Kez5A/OD83Z++cLDGb99JJpAJA/VmSTDFqNUASkLm+ZLSxPleXR7cUYUUd8bH87cd dyxA== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=ft6+RGXwGoNfQPVxUIyS6aMtaPfNIigO2DmrtfxTDMo=; b=I0WlH00r4dL2IrytROsj+E4TAF+/YPO0hSszY7dVG3C36HcF5l3zfHXL5HL/JoOFBH +FYZ+3mss9RwfTfzgruhMZ6/KXB43fF8rSP+THKw68Skx+Ioz61od5PFjPDsYB4o0Y18 /kw2xd77SthpVZxiK7q7QGiEHV/HcPJccRqZpsxvakEe9lTBd/4Sj1KmDMMnUGw0NkdJ LJMk7DMkHEtEXzQRCpSK0DIFXe2DE/q/90MxSNkhoU0SgsyD4lGHktGgnOgIh3IYR5OG 4ErSHN+ukSOyEAlhUJSnck6j8Ujvp8mSjw0Gsl4KE0Mr8kDg+zoVEH7uYwWKZbao/poe 8rZg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@chronox.de header.s=strato-dkim-0002 header.b=q5iEjTH8; 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 f190si17826026oig.229.2020.01.19.23.02.16; Sun, 19 Jan 2020 23:02:28 -0800 (PST) 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=fail header.i=@chronox.de header.s=strato-dkim-0002 header.b=q5iEjTH8; 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 S1726942AbgATHBT (ORCPT + 99 others); Mon, 20 Jan 2020 02:01:19 -0500 Received: from mo4-p03-ob.smtp.rzone.de ([85.215.255.104]:15606 "EHLO mo4-p03-ob.smtp.rzone.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726421AbgATHBQ (ORCPT ); Mon, 20 Jan 2020 02:01:16 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1579503675; s=strato-dkim-0002; d=chronox.de; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: X-RZG-CLASS-ID:X-RZG-AUTH:From:Subject:Sender; bh=ft6+RGXwGoNfQPVxUIyS6aMtaPfNIigO2DmrtfxTDMo=; b=q5iEjTH8C6Ov26uOpOIr3LWTgQCb9E3oDIevGmo3OBaoAo1ekAnu4gjj/gy7Oziqqy gIFuB4MqIq1Lz0g6gQMoZVEV8KT7+Px1aholu34Kts70vi20GJIfxX3EK4yOUm0Q7omI WO/V81eS5QCMkMSI6iZjU07Lr4kwg9ULFkbFV0TrfFkAhewdMRx+y2gZ4UJytuGL5t3E /msjyFhyjyqWC71n5dDESWW+Be2Xm4pVRACvGNCZQywmH/QHBzsQcXWnxKwI/ccckK9l Z391UHBhMFGx/rSh2KygM3QWNklmEAGE2bCCrQbb4eaMADiPZmJJ77Sek9VBMyERlK3g X4tQ== X-RZG-AUTH: ":P2ERcEykfu11Y98lp/T7+hdri+uKZK8TKWEqNyiHySGSa9k9xmwdNnzGHXPaJvSfTe7W" X-RZG-CLASS-ID: mo00 Received: from positron.chronox.de by smtp.strato.de (RZmta 46.1.4 DYNA|AUTH) with ESMTPSA id u04585w0K6xnqZP (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Mon, 20 Jan 2020 07:59:49 +0100 (CET) From: Stephan =?ISO-8859-1?Q?M=FCller?= To: Arnd Bergmann Cc: Greg Kroah-Hartman , linux-crypto@vger.kernel.org, LKML , linux-api@vger.kernel.org, "Eric W. Biederman" , "Alexander E. Patrakov" , "Ahmed S. Darwish" , "Theodore Y. Ts'o" , Willy Tarreau , Matthew Garrett , Vito Caputo , Andreas Dilger , Jan Kara , Ray Strode , William Jon McCann , zhangjs , Andy Lutomirski , Florian Weimer , Lennart Poettering , Nicolai Stange , "Peter, Matthias" , Marcelo Henrique Cerri , Roman Drahtmueller , Neil Horman , Randy Dunlap , Julia Lawall , Dan Carpenter Subject: [PATCH v29 08/12] crypto: provide access to a static Jitter RNG state Date: Sun, 19 Jan 2020 22:17:33 +0100 Message-ID: <3163301.oFKfPMb7QI@positron.chronox.de> In-Reply-To: <1967138.dxe05VgvIB@positron.chronox.de> References: <6157374.ptSnyUpaCn@positron.chronox.de> <5951792.lmNsirYsPE@positron.chronox.de> <1967138.dxe05VgvIB@positron.chronox.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="iso-8859-1" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org To support the LRNG operation which uses the Jitter RNG separately from the kernel crypto API, at a time where potentially the regular memory management is not yet initialized, the Jitter RNG needs to provide a state whose memory is defined at compile time. As only once instance will ever be needed by the LRNG, define once static memory block which is solely to be used by the LRNG. CC: "Eric W. Biederman" CC: "Alexander E. Patrakov" CC: "Ahmed S. Darwish" CC: "Theodore Y. Ts'o" CC: Willy Tarreau CC: Matthew Garrett CC: Vito Caputo CC: Andreas Dilger CC: Jan Kara CC: Ray Strode CC: William Jon McCann CC: zhangjs CC: Andy Lutomirski CC: Florian Weimer CC: Lennart Poettering CC: Nicolai Stange Reviewed-by: Roman Drahtmueller Tested-by: Roman Drahtm=FCller Tested-by: Marcelo Henrique Cerri Tested-by: Neil Horman Signed-off-by: Stephan Mueller =2D-- crypto/jitterentropy-kcapi.c | 3 +-- crypto/jitterentropy.c | 25 ++++++++++++++++++- .../crypto/internal}/jitterentropy.h | 3 +++ 3 files changed, 28 insertions(+), 3 deletions(-) rename {crypto =3D> include/crypto/internal}/jitterentropy.h (84%) diff --git a/crypto/jitterentropy-kcapi.c b/crypto/jitterentropy-kcapi.c index a5ce8f96790f..11b00e9f37f3 100644 =2D-- a/crypto/jitterentropy-kcapi.c +++ b/crypto/jitterentropy-kcapi.c @@ -43,8 +43,7 @@ #include #include #include =2D =2D#include "jitterentropy.h" +#include =20 /*************************************************************************= ** * Helper function diff --git a/crypto/jitterentropy.c b/crypto/jitterentropy.c index 042157f0d28b..529c9db13e64 100644 =2D-- a/crypto/jitterentropy.c +++ b/crypto/jitterentropy.c @@ -103,7 +103,7 @@ struct rand_data { * Helper functions *************************************************************************= **/ =20 =2D#include "jitterentropy.h" +#include =20 /** * Update of the loop count used for the next round of @@ -639,3 +639,26 @@ int jent_entropy_init(void) =20 return 0; } + +struct rand_data *jent_lrng_entropy_collector(void) +{ + static unsigned char lrng_jent_mem[JENT_MEMORY_SIZE]; + static struct rand_data lrng_jent_state =3D { + .data =3D 0, + .old_data =3D 0, + .prev_time =3D 0, + .last_delta =3D 0, + .last_delta2 =3D 0, + .osr =3D 1, + .mem =3D lrng_jent_mem, + .memlocation =3D 0, + .memblocks =3D JENT_MEMORY_BLOCKSIZE, + .memblocksize =3D JENT_MEMORY_BLOCKS, + .memaccessloops =3D JENT_MEMORY_ACCESSLOOPS, + }; + + if (jent_entropy_init()) + return NULL; + + return &lrng_jent_state; +} diff --git a/crypto/jitterentropy.h b/include/crypto/internal/jitterentropy= =2Eh similarity index 84% rename from crypto/jitterentropy.h rename to include/crypto/internal/jitterentropy.h index c83fff32d130..6e07d86eac82 100644 =2D-- a/crypto/jitterentropy.h +++ b/include/crypto/internal/jitterentropy.h @@ -15,3 +15,6 @@ extern int jent_read_entropy(struct rand_data *ec, unsign= ed char *data, extern struct rand_data *jent_entropy_collector_alloc(unsigned int osr, unsigned int flags); extern void jent_entropy_collector_free(struct rand_data *entropy_collecto= r); + +/* Access to statically allocated Jitter RNG instance */ +extern struct rand_data *jent_lrng_entropy_collector(void); =2D-=20 2.24.1