From nobody Mon Feb 9 13:24:16 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1552539832089382.1977827431457; Wed, 13 Mar 2019 22:03:52 -0700 (PDT) Received: from localhost ([127.0.0.1]:56940 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h4IWw-0001nH-3c for importer@patchew.org; Thu, 14 Mar 2019 01:03:46 -0400 Received: from eggs.gnu.org ([209.51.188.92]:56149) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h4IP3-0004Vq-J9 for qemu-devel@nongnu.org; Thu, 14 Mar 2019 00:55:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h4IP2-0007Ns-K8 for qemu-devel@nongnu.org; Thu, 14 Mar 2019 00:55:37 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]:35829) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1h4IP2-0007NO-CJ for qemu-devel@nongnu.org; Thu, 14 Mar 2019 00:55:36 -0400 Received: by mail-pf1-x432.google.com with SMTP id j5so3019677pfa.2 for ; Wed, 13 Mar 2019 21:55:36 -0700 (PDT) Received: from localhost.localdomain (97-113-188-82.tukw.qwest.net. [97.113.188.82]) by smtp.gmail.com with ESMTPSA id d9sm16185027pgq.6.2019.03.13.21.55.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 13 Mar 2019 21:55:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=CoYKWtcbjnkf8ec29DwDvyGtEftw+7AvJg2LPmquNfI=; b=wxlZzNoJBsCaR2oNNS1aUsFy7iv2g/iyxGCts959DJO0xVRFNZC8o5GQb9UJfWbqgL KJhZsSFYl07vr4oriN2AphT2WuTHqzaSbSt+N1tpd1OhqTXK6vIh0djo1CvPOIeVBOwV PqtmVo9bcVDeruzoUx06+GH9r5JaUfgkxFpUR7K4aeifyMCWyHBSDJ0w0TIgDSiJUlEG UMQb57RPVVcG5TnHNBrS1+fOLCbnu87JowSPTzGCeuK8xosTilw6z7L5yLDTdm76hKzE snFgOoi61dQJh5pLaE0aqzDSGH5xjeK0iYucFxH4v7WiHb0FSBB4Of3yfM92AIjxlGr4 6tvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=CoYKWtcbjnkf8ec29DwDvyGtEftw+7AvJg2LPmquNfI=; b=IDhbWgTfx+AupL1zigsn/0X2u8ihP54lWu8z1RcSCZVr6+q+7PLWGY4Kw5NEegHknT SlOk4mHWBvnJOnBaa5c0eCz+Zn06/WZcmddieLR8xYq/1lKCyLnorinDVgA88Cv+saNf VhiP+rTNQCG6Qw/XqooMTWQ/sO4ZD3yt844ik53hklER7x+IO61O7GspjLkl3LxmaBte dCoOaLn4clG68bOvoD5oa15urFLVH3hPbCYc3v1Qd2W7YZY54zNUWM0icyLFs7W09qjL nJdb4IT1J/r47Fq+6BkG0mYn3nIquWaypvxk7j9h6cllGdA/5297v/JEAYIWYc5upx2D jtKQ== X-Gm-Message-State: APjAAAXiSnU0q/ixB3FW0DKF52K+Stbjy/MzdZzUJai/w55tDK/Uvb+M tf2WWhaskkNRM9TwSsWKJIjAgDZdrY4= X-Google-Smtp-Source: APXvYqwfHfKKW8ZJ8g/qwlEPvIkdKZoThWCJBMwYdO2ceeMsto+O2IYdSi1mS8QSUvwBacinNjec2A== X-Received: by 2002:a63:4c13:: with SMTP id z19mr17730178pga.71.1552539334932; Wed, 13 Mar 2019 21:55:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 13 Mar 2019 21:55:17 -0700 Message-Id: <20190314045526.13342-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190314045526.13342-1-richard.henderson@linaro.org> References: <20190314045526.13342-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::432 Subject: [Qemu-devel] [PATCH v2 05/14] crypto: Use getrandom for qcrypto_random_bytes X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Prefer it to direct use of /dev/urandom. Cc: Daniel P. Berrang=C3=A9 Signed-off-by: Richard Henderson --- crypto/random-platform.c | 21 +++++++++++++++++++++ configure | 18 +++++++++++++++++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/crypto/random-platform.c b/crypto/random-platform.c index 8bfce99a65..bdaa8fbbfb 100644 --- a/crypto/random-platform.c +++ b/crypto/random-platform.c @@ -26,6 +26,8 @@ #ifdef _WIN32 #include static HCRYPTPROV hCryptProv; +#elif defined(CONFIG_GETRANDOM) +#include #else static int fd; /* a file handle to either /dev/urandom or /dev/random */ #endif @@ -39,6 +41,12 @@ int qcrypto_random_init(Error **errp) "Unable to create cryptographic provider"); return -1; } +#elif defined(CONFIG_GETRANDOM) + errno =3D 0; + if (getrandom(NULL, 0, 0) < 0 && errno =3D=3D ENOSYS) { + error_setg_errno(errp, errno, "getrandom"); + return -1; + } #else /* TBD perhaps also add support for BSD getentropy / Linux * getrandom syscalls directly */ @@ -65,6 +73,19 @@ int qcrypto_random_bytes(uint8_t *buf G_GNUC_UNUSED, "Unable to read random bytes"); return -1; } +#elif defined(CONFIG_GETRANDOM) + while (buflen > 0) { + ssize_t got =3D getrandom(buf, buflen, 0); + if (unlikely(got < 0)) { + if (errno !=3D EINTR) { + error_setg_errno(errp, errno, "getrandom"); + return -1; + } + } else { + buflen -=3D got; + buf +=3D got; + } + } #else while (buflen > 0) { ssize_t got =3D read(fd, buf, buflen); diff --git a/configure b/configure index 8992b3aade..6a32284d26 100755 --- a/configure +++ b/configure @@ -5783,6 +5783,20 @@ if compile_prog "" "" ; then have_utmpx=3Dyes fi =20 +########################################## +# check for getrandom() + +have_getrandom=3Dno +cat > $TMPC << EOF +#include +int main(void) { + return getrandom(0, 0, GRND_NONBLOCK); +} +EOF +if compile_prog "" "" ; then + have_getrandom=3Dyes +fi + ########################################## # checks for sanitizers =20 @@ -7170,7 +7184,9 @@ fi if test "$have_utmpx" =3D "yes" ; then echo "HAVE_UTMPX=3Dy" >> $config_host_mak fi - +if test "$have_getrandom" =3D "yes" ; then + echo "CONFIG_GETRANDOM=3Dy" >> $config_host_mak +fi if test "$ivshmem" =3D "yes" ; then echo "CONFIG_IVSHMEM=3Dy" >> $config_host_mak fi --=20 2.17.1