From nobody Sat Apr 20 08:48:15 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1557861615; cv=none; d=zoho.com; s=zohoarc; b=UjduEQgcYEL7wLVbernvSjviMKJ+aycSPGdWK0OiEGZMoC6VX9cKfA1yJqK4x7McOr9A1KR/N9PLUXlwOkFh234tE3S7qsU5LFt4feVNHXdIqIeBjeJRadLbqkeEZ1kUscMUaQnFWpHlnSmybpzgdwug1hQKl9bOZ26zxeSPBik= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557861615; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=av3lT3tB0E6MniPcJlUSedb9hAsWsyXtFxkAveRaX+4=; b=Um+rMETRoKdSq0/4zSftvBEnA9Da7mk9genF2Ug/6+0RexH/A+cCQvtAMgU+Ui1AyjPIovF3YLplDG+4uSzD+euB50ru7ne9dbIRKnBwPbBmHY/tbgEy4wHiQubXjxXtUa6dq7UnytrbyjeMzNWuT2n5Tka2mHwIAwV50X0ZaBc= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557861615799918.9614763021409; Tue, 14 May 2019 12:20:15 -0700 (PDT) Received: from localhost ([127.0.0.1]:52926 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcyE-00047D-Nt for importer@patchew.org; Tue, 14 May 2019 15:20:14 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48698) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcv6-0002Qk-4E for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQcv5-0006Yk-2w for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:00 -0400 Received: from mail-pf1-x443.google.com ([2607:f8b0:4864:20::443]:38182) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQcv4-0006XS-T2 for qemu-devel@nongnu.org; Tue, 14 May 2019 15:16:59 -0400 Received: by mail-pf1-x443.google.com with SMTP id b76so5105pfb.5 for ; Tue, 14 May 2019 12:16:58 -0700 (PDT) Received: from localhost.localdomain (97-113-13-231.tukw.qwest.net. [97.113.13.231]) by smtp.gmail.com with ESMTPSA id o6sm18682982pfa.88.2019.05.14.12.16.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 May 2019 12:16:56 -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; bh=av3lT3tB0E6MniPcJlUSedb9hAsWsyXtFxkAveRaX+4=; b=nvLzqvhnv+ElZBEAG1AOsTIF/YA3g1Fsm/33pqJH3O8JS4Yzkw0N3z1AL09mFKhtwk VOkqh1EytBQ79nQ5vpZzQ4pyiWxPglWq+cgKK1QaV324saRBQN2LQ+rdQ3Mq0xHAaUbY SGDaviQuX6/3TVR+Xh5IoAROzEtFb8+hu9nDt+Pw+rGhQQlBcDJGUZ5Y6u8roUxZqay3 6sbLDIcmq7iBqt9EIWVZl0c2r0TAag9UjwkBLRCwfb860DZaFb0LFdWQ9TbjV6Fw0axz 4PIc/jpOUfmrxIHMisxeUfgJ6OsrMjvJKus6n3jGpx6ghOR7zhqQFxyxAtKtE+HyrKVf u4DA== 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; bh=av3lT3tB0E6MniPcJlUSedb9hAsWsyXtFxkAveRaX+4=; b=YJVFqfrBCAgiUB3haAn2zbC/CLjbL0CkkEFpH839FdTE5+NZc+ax7HVfgn+7pkYAsR wXwU8wcuXYUJA/MlOnFgI9tfOlDZTfuiGD0bI+r7wzUIquiIV0l65FhX9E1j2FXbfDOj xKE3x7/O1t55glKtzeJUmnOgOJFTvwsRmYyd6f0MW8mInv5o+YjZB0YqnAV2dyZrIOQB fZ13XX7U0NsuPqUrBXW93nTxT8DCNGwiA/dnGqSBD+YZ1+x7C8KMarjgQHaoTExT0NfJ 2dKsbTNYaL4m/SyjWgCcw0brqhJc9soLAHXoJABQQiv3LIF+WB9xYv+SpCXkQ4+kYQIZ yPsg== X-Gm-Message-State: APjAAAWPsmmDShrF01Tf0iWruGq7OjXro7UC6B3YDV0MJUpqS5ajLY4g HwxzFiy1xYYu6Z4nGdvrBbUB0Z5p7g0= X-Google-Smtp-Source: APXvYqwfHc+8AeGVIQxBL82j1t9GKOouULDlwIRkflPH4w0i+MML4Iq/GhF5Kuhgpl/LA222pZx0hQ== X-Received: by 2002:aa7:8c1a:: with SMTP id c26mr42182591pfd.25.1557861417150; Tue, 14 May 2019 12:16:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 14 May 2019 12:16:30 -0700 Message-Id: <20190514191653.31488-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190514191653.31488-1-richard.henderson@linaro.org> References: <20190514191653.31488-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::443 Subject: [Qemu-devel] [PATCH v7 01/24] build: Link user-only with crypto-rng-obj-y 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: , Cc: lvivier@redhat.com, berrange@redhat.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" For user-only, we require only the random number bits of the crypto subsystem. We need to preserve --static linking, which for many recent Linux distributions precludes using GnuTLS or GCrypt. Instead, use our random-platform module unconditionally. Signed-off-by: Richard Henderson Reviewed-by: Laurent Vivier --- Makefile | 6 ++++-- Makefile.objs | 1 + Makefile.target | 3 ++- crypto/Makefile.objs | 1 + 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 66d5c65156..524f2f8a57 100644 --- a/Makefile +++ b/Makefile @@ -411,6 +411,7 @@ dummy :=3D $(call unnest-vars,, \ block-obj-m \ crypto-obj-y \ crypto-aes-obj-y \ + crypto-rng-obj-y \ qom-obj-y \ io-obj-y \ common-obj-y \ @@ -482,8 +483,9 @@ subdir-capstone: .git-submodule-status subdir-slirp: .git-submodule-status $(call quiet-command,$(MAKE) -C $(SRC_PATH)/slirp BUILD_DIR=3D"$(BUILD_DI= R)/slirp" CC=3D"$(CC)" AR=3D"$(AR)" LD=3D"$(LD)" RANLIB=3D"$(RANLIB)" CFLAG= S=3D"$(QEMU_CFLAGS) $(CFLAGS)" LDFLAGS=3D"$(LDFLAGS)") =20 -$(SUBDIR_RULES): libqemuutil.a $(common-obj-y) $(chardev-obj-y) \ - $(qom-obj-y) $(crypto-aes-obj-$(CONFIG_USER_ONLY)) +$(SUBDIR_RULES): libqemuutil.a $(common-obj-y) $(chardev-obj-y) $(qom-obj-= y) \ + $(crypto-aes-obj-$(CONFIG_USER_ONLY)) \ + $(crypto-rng-obj-$(CONFIG_USER_ONLY)) =20 ROMSUBDIR_RULES=3D$(patsubst %,romsubdir-%, $(ROMS)) # Only keep -O and -g cflags diff --git a/Makefile.objs b/Makefile.objs index cf065de5ed..0c13ff47ea 100644 --- a/Makefile.objs +++ b/Makefile.objs @@ -26,6 +26,7 @@ block-obj-m =3D block/ =20 crypto-obj-y =3D crypto/ crypto-aes-obj-y =3D crypto/ +crypto-rng-obj-y =3D crypto/ =20 ####################################################################### # qom-obj-y is code used by both qemu system emulation and qemu-img diff --git a/Makefile.target b/Makefile.target index ae02495951..4e579a0a84 100644 --- a/Makefile.target +++ b/Makefile.target @@ -181,6 +181,7 @@ dummy :=3D $(call unnest-vars,.., \ chardev-obj-y \ crypto-obj-y \ crypto-aes-obj-y \ + crypto-rng-obj-y \ qom-obj-y \ io-obj-y \ common-obj-y \ @@ -189,7 +190,7 @@ all-obj-y +=3D $(common-obj-y) all-obj-y +=3D $(qom-obj-y) all-obj-$(CONFIG_SOFTMMU) +=3D $(authz-obj-y) all-obj-$(CONFIG_SOFTMMU) +=3D $(block-obj-y) $(chardev-obj-y) -all-obj-$(CONFIG_USER_ONLY) +=3D $(crypto-aes-obj-y) +all-obj-$(CONFIG_USER_ONLY) +=3D $(crypto-aes-obj-y) $(crypto-rng-obj-y) all-obj-$(CONFIG_SOFTMMU) +=3D $(crypto-obj-y) all-obj-$(CONFIG_SOFTMMU) +=3D $(io-obj-y) =20 diff --git a/crypto/Makefile.objs b/crypto/Makefile.objs index 256c9aca1f..ee7e628ca6 100644 --- a/crypto/Makefile.objs +++ b/crypto/Makefile.objs @@ -37,5 +37,6 @@ crypto-obj-y +=3D block-luks.o =20 # Let the userspace emulators avoid linking gnutls/etc crypto-aes-obj-y =3D aes.o +crypto-rng-obj-y =3D random-platform.o =20 stub-obj-y +=3D pbkdf-stub.o --=20 2.17.1 From nobody Sat Apr 20 08:48:15 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1557861794; cv=none; d=zoho.com; s=zohoarc; b=XrzS9p5BAvlfP6cvquzJUb6qugmAKpNeNRmjmeDKpYxpaKT3wibwsK/AoepRXLoY9NI9rUFTZLofsG049r3infkS8guaC7pfDyS44bqKbY9DcM8cQV/e/aYBogXwov+t8/esKvZWbGf+56WuMBfy9J1IsxTJloIHCXR6MWngWxo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557861794; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=WcaPjSSW8mCEGy+vfZffpT+ukMC7uteGhxOw5c2wJXo=; b=H0mVs68iufWwZrzBkClMUSUL7bRmgGrlF/5SD2CfsrmttcTXw2EknLe3KFBER76CsifXHTfhr2KdjoO4l6hYtI7GAPJoAiOpPiC7fWWTJOd/0yxhFfLjU0oyh9SICiBHykv5SNoUjBuzk+bzmHvN0b6hNM993pohP5mvMJbE1c0= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 155786179400958.60205523344098; Tue, 14 May 2019 12:23:14 -0700 (PDT) Received: from localhost ([127.0.0.1]:52983 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQd16-00076D-Le for importer@patchew.org; Tue, 14 May 2019 15:23:12 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48718) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcv7-0002RV-MW for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQcv6-0006bA-Ad for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:01 -0400 Received: from mail-pg1-x544.google.com ([2607:f8b0:4864:20::544]:36047) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQcv6-0006ZU-4y for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:00 -0400 Received: by mail-pg1-x544.google.com with SMTP id a3so51477pgb.3 for ; Tue, 14 May 2019 12:17:00 -0700 (PDT) Received: from localhost.localdomain (97-113-13-231.tukw.qwest.net. [97.113.13.231]) by smtp.gmail.com with ESMTPSA id o6sm18682982pfa.88.2019.05.14.12.16.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 May 2019 12:16:57 -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=WcaPjSSW8mCEGy+vfZffpT+ukMC7uteGhxOw5c2wJXo=; b=Gb+xsA4UIYZS7cwRNKCo6SpGCgSreXYfWByMU7/mA9nPjkwQxadgEYrs+xeJJRwj+p HNGJuwCiKp31mt8+sW8yHU3VPhI5m+VM82GA98KMPCb4ScXgK1tBtG9DHPTLHYD4X5Yg chW0MGy7d14uUDyqsFTiaw7u88J484/7B9XqeWCmTHy+CRRUWMr58lhX5iBb9rGnQwO5 w+Wm0woCLXjLkAKmbjoQBM9WdUZkxHLT9GhYgU76BEFh77r/GXhg5D4QF6aNKjKRKIXJ HKiOsM235FPdDUcc6A1ni0U7RYdBTUtl7k+cIFhmXPNa5kIwpDn3itHIeRHOoGtUlLKs 2MTw== 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=WcaPjSSW8mCEGy+vfZffpT+ukMC7uteGhxOw5c2wJXo=; b=kQkkUAQS157FF6LY1RAtGze/FA5gRRXp9LjUgvYYY8WHyFVnS4EmxR1llQmkWi/7pV 7f41sTShSKfJWkHXw1XR8PaxPvzxy12X3oFJCaSIZFeLkD1wNEv3qOjen2+yxJ+KtOoV mWPPe5vmk3pNWKdBhco4wIcB/fgzOsjY8mPj1smiFRQHQQqxqOe2U+zV0QPm6DWtyICS IFxcp69kqam20wU1gry5TI/blW8Lo7BqKLz+SYhCVqLF7poVSgqSl/DtJ7p0BIZd7WIm G/l/iOaqrnp+9qSFH+bUTvob5Nw+H6jLiXIrAy8EX8VxrWBW+tZpxfJBtSje/YFsvuk/ 7WxQ== X-Gm-Message-State: APjAAAVmrKVD5spIm+g0W/F4i3dguH2S0dL5ouVOEs1YPYfht1/YnA8T uzF5RAaxegonUMSj9rGcFwmHLDD8i8Y= X-Google-Smtp-Source: APXvYqwctRHMeI2FniMlH0X5NmEGLWKrgHpwgS5pDI6VemboQXbpmeExGEyHGL+qyi6U+PvXpsu+eQ== X-Received: by 2002:a62:160b:: with SMTP id 11mr43761787pfw.88.1557861418821; Tue, 14 May 2019 12:16:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 14 May 2019 12:16:31 -0700 Message-Id: <20190514191653.31488-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190514191653.31488-1-richard.henderson@linaro.org> References: <20190514191653.31488-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::544 Subject: [Qemu-devel] [PATCH v7 02/24] crypto: Reverse code blocks in random-platform.c 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: , Cc: lvivier@redhat.com, berrange@redhat.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Use #ifdef _WIN32 instead of #ifndef _WIN32. This will make other tests easier to sequence. Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Richard Henderson --- crypto/random-platform.c | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/crypto/random-platform.c b/crypto/random-platform.c index 7541b4cae7..f995fc0ef1 100644 --- a/crypto/random-platform.c +++ b/crypto/random-platform.c @@ -32,7 +32,14 @@ static int fd; /* a file handle to either /dev/urandom o= r /dev/random */ =20 int qcrypto_random_init(Error **errp) { -#ifndef _WIN32 +#ifdef _WIN32 + if (!CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, + CRYPT_SILENT | CRYPT_VERIFYCONTEXT)) { + error_setg_win32(errp, GetLastError(), + "Unable to create cryptographic provider"); + return -1; + } +#else /* TBD perhaps also add support for BSD getentropy / Linux * getrandom syscalls directly */ fd =3D open("/dev/urandom", O_RDONLY); @@ -44,15 +51,7 @@ int qcrypto_random_init(Error **errp) error_setg(errp, "No /dev/urandom or /dev/random found"); return -1; } -#else - if (!CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, - CRYPT_SILENT | CRYPT_VERIFYCONTEXT)) { - error_setg_win32(errp, GetLastError(), - "Unable to create cryptographic provider"); - return -1; - } #endif - return 0; } =20 @@ -60,7 +59,15 @@ int qcrypto_random_bytes(uint8_t *buf G_GNUC_UNUSED, size_t buflen G_GNUC_UNUSED, Error **errp) { -#ifndef _WIN32 +#ifdef _WIN32 + if (!CryptGenRandom(hCryptProv, buflen, buf)) { + error_setg_win32(errp, GetLastError(), + "Unable to read random bytes"); + return -1; + } + + return 0; +#else int ret =3D -1; int got; =20 @@ -82,13 +89,5 @@ int qcrypto_random_bytes(uint8_t *buf G_GNUC_UNUSED, ret =3D 0; cleanup: return ret; -#else - if (!CryptGenRandom(hCryptProv, buflen, buf)) { - error_setg_win32(errp, GetLastError(), - "Unable to read random bytes"); - return -1; - } - - return 0; #endif } --=20 2.17.1 From nobody Sat Apr 20 08:48:15 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1557861582; cv=none; d=zoho.com; s=zohoarc; b=ZNd0wRD+q8X1o9NfNt/g2CzUIIKIe7u+rnpcNh/SVG6/bMD2AoX5JDlCYbmGkNWINAt5iZHFnRqcGyMPBq3zR3/ZOY/vbk/+AiDz/BF5p3JFCiHHDp5WL2KhtYojNlvZrDIMZsY+aEj9laQYiT2+f23XwRM0ASMFsluk8AuFpTY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557861582; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=VqY3mH4YRn0WtpmEi7qlWT5KRhdZPDg5AxBMBXlF56s=; b=J6i9s60zcHLbAsqTmGcLv1l5SOFZldITSWoenLEoYfzNcpeUAF/XNZjqiPMhjj6BAqOEgHjJyCemnA7vXfHgUFJrzCL/uooBJ+WVnfDifJS8A5ttpMx94ULJpVUBV+bLd3U82ZFjwffg71Uh6BVwQ3UHCTIcYp97DcmOOxgnLO0= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557861582543613.7779052893814; Tue, 14 May 2019 12:19:42 -0700 (PDT) Received: from localhost ([127.0.0.1]:52922 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcxe-0003fZ-8d for importer@patchew.org; Tue, 14 May 2019 15:19:38 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48732) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcv8-0002SE-Fb for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQcv7-0006cz-HD for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:02 -0400 Received: from mail-pl1-x644.google.com ([2607:f8b0:4864:20::644]:46217) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQcv7-0006by-By for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:01 -0400 Received: by mail-pl1-x644.google.com with SMTP id r18so59138pls.13 for ; Tue, 14 May 2019 12:17:01 -0700 (PDT) Received: from localhost.localdomain (97-113-13-231.tukw.qwest.net. [97.113.13.231]) by smtp.gmail.com with ESMTPSA id o6sm18682982pfa.88.2019.05.14.12.16.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 May 2019 12:16:59 -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=VqY3mH4YRn0WtpmEi7qlWT5KRhdZPDg5AxBMBXlF56s=; b=MV1an0vg/aEqlkOwBdnA9NRpAfsJuH1ukbkckmaIgldQYs+e8INRbWBqaMeKoFt/RH H3WtchNWEb3bXwtdWHJi9JvqgmzvsuQ2a/YCoZgqQpj9N/izR4jldIXaXmdPivg1+qtg R09ts4LpJQrvvpj2FRSGAdmBO/VsmL/ni0IakBhLSLFPcXadNvVDohPmvo1e6FxBpYm+ sI29s+bMRGnRVnsTckOg5sgSSywdrVRd+mvWhXDcULZ5uq0EVendavYO9AzYLCJclOy/ 7XJ0Zs24mUD597t8Ok3pUDInm8NRmJZyZKcjKeiut+5SQGbZ/exf2CsozEIh/5ho9TxH /zqw== 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=VqY3mH4YRn0WtpmEi7qlWT5KRhdZPDg5AxBMBXlF56s=; b=rnZnGLZbU8sCUxS1cAaDvk8b1KABeIDgQk84u8vvDIujg94bDCpqjL1lN0VGDY1AQ/ 1AFFjcNUfLa5hJQMPHrk7g+Iucl7WKbZQtSXw7aSYZFu/7gBP60FUC2x7GqrziEJnJnE Uyehy1y/CbbJUnXBJ0Wxt/1qC9x5b9tVOl1BdJnq7ktXNmWp1v6zDkjX4QrBtpIB8kUW 9l7ebeI+KJ5VeVrkTH3mD3SHuFNWBI3Waphh+e8FUQawi534Sh4NAG6G8YAhBDxngtvU mPNKU+2qylyEmKs+yUx5+r1XteWPHG99NuI4CXtaSbHgIH3KmMhEKluBEpc8bfcAmGuU oduA== X-Gm-Message-State: APjAAAXGd+N4pzCN3vFeGGzzi3VxiZz3l6F7aJfCupenWjH7t8c2+58p 6EYqwy3IrYkKzeQd1xgkwnQyzzaMMhk= X-Google-Smtp-Source: APXvYqy/9kjNWrfKiRjJ2jkACGJwi/jjbI1W/q0zvF+tIyzE7Teewbnb+GYLZkbhUs1ZwILezt9J5A== X-Received: by 2002:a17:902:5e1:: with SMTP id f88mr38615351plf.226.1557861420082; Tue, 14 May 2019 12:17:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 14 May 2019 12:16:32 -0700 Message-Id: <20190514191653.31488-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190514191653.31488-1-richard.henderson@linaro.org> References: <20190514191653.31488-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::644 Subject: [Qemu-devel] [PATCH v7 03/24] crypto: Do not fail for EINTR during 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: , Cc: lvivier@redhat.com, berrange@redhat.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) We can always get EINTR for read; /dev/urandom is no exception. Rearrange the order of tests for likelihood; allow degenerate buflen=3D=3D0 case to perform a no-op zero-length read. This means that the normal success path is a straight line with a single test for success. Reviewed-by: Laurent Vivier Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Richard Henderson --- crypto/random-platform.c | 36 +++++++++++++++--------------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/crypto/random-platform.c b/crypto/random-platform.c index f995fc0ef1..260b64564d 100644 --- a/crypto/random-platform.c +++ b/crypto/random-platform.c @@ -65,29 +65,23 @@ int qcrypto_random_bytes(uint8_t *buf G_GNUC_UNUSED, "Unable to read random bytes"); return -1; } - - return 0; #else - int ret =3D -1; - int got; - - while (buflen > 0) { - got =3D read(fd, buf, buflen); - if (got < 0) { - error_setg_errno(errp, errno, - "Unable to read random bytes"); - goto cleanup; - } else if (!got) { - error_setg(errp, - "Unexpected EOF reading random bytes"); - goto cleanup; + while (1) { + ssize_t got =3D read(fd, buf, buflen); + if (likely(got =3D=3D buflen)) { + return 0; + } + if (got > 0) { + buflen -=3D got; + buf +=3D got; + } else if (got =3D=3D 0) { + error_setg(errp, "Unexpected EOF reading random bytes"); + return -1; + } else if (errno !=3D EINTR) { + error_setg_errno(errp, errno, "Unable to read random bytes"); + return -1; } - buflen -=3D got; - buf +=3D got; } - - ret =3D 0; - cleanup: - return ret; #endif + return 0; } --=20 2.17.1 From nobody Sat Apr 20 08:48:15 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1557861958; cv=none; d=zoho.com; s=zohoarc; b=IhBMc0u0UCLc/I9VI2fR2ubx7Men5EHMwxNsw00XU+pPu8Z2abXLc32Agsow7ls8+AEPQGnltSxdgVhIvorRD27qaAAvazir/IJ1nZF/zRyyBOz2dParLsA6hmh379+tQbWp59vxClARlHbNpUUec48DKoHb5R/JxaoQNrYRiJ4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557861958; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=p/AR+QB1/uCfqQ+ytrGBnYCYqwPtnBM3b7CBgieQEw0=; b=XA/fadIjppxHEe0xPBt6HDyprTK7WvZB5EeELSSKpRYCUBCf8iMfGDOe+bgF2huw9HQsq7Zoum33PLgnNU6svTAUfybpkDRMJCsrdTDC8z8vaw8heBLVg6xOgUUC/LjgAyOuj8PdDRVPZZJTf/wdQBe8FjAbDuVb6l8RoV+mqMc= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557861958897302.85661427576076; Tue, 14 May 2019 12:25:58 -0700 (PDT) Received: from localhost ([127.0.0.1]:53035 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQd3h-0000xY-ON for importer@patchew.org; Tue, 14 May 2019 15:25:53 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48750) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcv9-0002TJ-OJ for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQcv8-0006fl-Tl for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:03 -0400 Received: from mail-pl1-x643.google.com ([2607:f8b0:4864:20::643]:38783) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQcv8-0006e9-OA for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:02 -0400 Received: by mail-pl1-x643.google.com with SMTP id f97so79423plb.5 for ; Tue, 14 May 2019 12:17:02 -0700 (PDT) Received: from localhost.localdomain (97-113-13-231.tukw.qwest.net. [97.113.13.231]) by smtp.gmail.com with ESMTPSA id o6sm18682982pfa.88.2019.05.14.12.17.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 May 2019 12:17:00 -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=p/AR+QB1/uCfqQ+ytrGBnYCYqwPtnBM3b7CBgieQEw0=; b=V27bejYPJ1d5Edg9q46vscEtm89bOnKxzU5r7sWIv8IilaDLnIMOP8AXYgW3Xxmbfw SpvIgUJF5QDDrzpY7eDH6SkqZHfgFRo9iC/F0BZP3p2SuyNGN0WYELh02fK8KNKPkzTV 77NabADkpyartaqjMMG1gZSrfKYsd2qg01kwjhEtfFSdYlr9J/Dv8/WmDvGOCe2Ug5nF SzFIAHLAqupumigka2FnjCWRAyN/Hci3xBBOR7CDqTrZcSyKpBeDLg9tY+Iw7WrijMhX CnsHMjfjs5b9A9yK1NJgABaM0qSjIHWVekLX6/8gBPa2a0RT+Lp01K+G3a3rAFwf9U3s YrmA== 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=p/AR+QB1/uCfqQ+ytrGBnYCYqwPtnBM3b7CBgieQEw0=; b=HnhEWc6H8lVna1qB9hEKz5J3KHrlVNHg7pG9QdtQnVRu/UNBogdHkJ89YktAHWd+0Z JCquR8OjsKWOk96vJdPv7uBzmQn9nK+M55VitaOOmKCeJiPXjxmjTyfk386LcQ3zgZig AHoj0SxDGmFZ57P4HmozaZzV9nx/7Soc3bXyuKcxKmrhg+9W7jpdMERij14CnYyjnNrg PdlA5j5LYdfjVWRg1/ARq+AlXw4PUCJfiRqXOe6C49GGQYNlDxutBnSPejXUCKnPuUj1 C1Blw0u1hJKALSJn715tfglOdBoYGUG2j7sypKsslILKOAlf4HLp6pj0BVp2m6Ia/xvv cufw== X-Gm-Message-State: APjAAAWX0724ZpCE2+ax3IAzk2mpppkut/WtguQirdiIWBJNHRGSEdPV dh5uP/8A/uSPm0rhJXufaIpP8tpT6fk= X-Google-Smtp-Source: APXvYqwyK3gkJx0xK8LNpZ45oQmm+Su+9Z+Muc0tSHRYW182TPlLzzVbxa4gQMh6pqMrZW9UCtzOfA== X-Received: by 2002:a17:902:8b8a:: with SMTP id ay10mr31193869plb.74.1557861421412; Tue, 14 May 2019 12:17:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 14 May 2019 12:16:33 -0700 Message-Id: <20190514191653.31488-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190514191653.31488-1-richard.henderson@linaro.org> References: <20190514191653.31488-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::643 Subject: [Qemu-devel] [PATCH v7 04/24] crypto: Use O_CLOEXEC in qcrypto_random_init 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: , Cc: lvivier@redhat.com, berrange@redhat.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Avoids leaking the /dev/urandom fd into any child processes. Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Richard Henderson --- crypto/random-platform.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crypto/random-platform.c b/crypto/random-platform.c index 260b64564d..6df40744c7 100644 --- a/crypto/random-platform.c +++ b/crypto/random-platform.c @@ -42,9 +42,9 @@ int qcrypto_random_init(Error **errp) #else /* TBD perhaps also add support for BSD getentropy / Linux * getrandom syscalls directly */ - fd =3D open("/dev/urandom", O_RDONLY); + fd =3D open("/dev/urandom", O_RDONLY | O_CLOEXEC); if (fd =3D=3D -1 && errno =3D=3D ENOENT) { - fd =3D open("/dev/random", O_RDONLY); + fd =3D open("/dev/random", O_RDONLY | O_CLOEXEC); } =20 if (fd < 0) { --=20 2.17.1 From nobody Sat Apr 20 08:48:15 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1557861758; cv=none; d=zoho.com; s=zohoarc; b=ejd17kI3rSKEwbk+/RpnxkB3CtQlzsdB5ehByf3Z9+eNVdVJyDCOur61rEsM5kzV/SEbubANt6qVmzTonPjPDfULu4X7gc+XewMAlM3gqp5QEnJ/zWLZ81TWNhe3w9N7TkMAE0af6Oip7ucNRAqNdv4cCu5WTPk4KJWP/geOEKI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557861758; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=b42dIpKHYcMh2o6M7wOruwcfvv0uPGu8hN7+qTRYDSE=; b=IRy/ijY1nSdLT9Y6Gyc8F+mYwr7XPnbwnpupql4zWcD9HYIMdSD+AVRjXld7u59EAzH/Hh61hefAEjKr++91a8D71dApwRaMc97cIzU8zOh13BzRozAYP+aKxw3/0fpYj9JBlPTMLA+jNebUy/XVLPQ91NQ8rorLvIWHIG5Felo= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557861758220981.9312532771257; Tue, 14 May 2019 12:22:38 -0700 (PDT) Received: from localhost ([127.0.0.1]:52977 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQd0V-0006c2-1t for importer@patchew.org; Tue, 14 May 2019 15:22:35 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48763) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcvB-0002Tj-1F for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQcvA-0006ia-1i for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:05 -0400 Received: from mail-pl1-x644.google.com ([2607:f8b0:4864:20::644]:38952) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQcv9-0006he-Rj for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:03 -0400 Received: by mail-pl1-x644.google.com with SMTP id g9so76437plm.6 for ; Tue, 14 May 2019 12:17:03 -0700 (PDT) Received: from localhost.localdomain (97-113-13-231.tukw.qwest.net. [97.113.13.231]) by smtp.gmail.com with ESMTPSA id o6sm18682982pfa.88.2019.05.14.12.17.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 May 2019 12:17:01 -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=b42dIpKHYcMh2o6M7wOruwcfvv0uPGu8hN7+qTRYDSE=; b=jdsxC1VLgN0tfRuYsyqcgMMtnFn2rns0MUdiBSUqil1G9BwSYYcgE9X0mSutSFdIzZ OgCpj90j3LSCTIC8PPXvmW5sgeRNBuMmkKN6g6Tvs3PzVpHhFLP/Nf2eeoc+QiRn+vEZ 0b9j/yPzyXkO5D+FXBeB47fJnYIcKBg5IuZtLZhZNeMmdkrdhf1TnyqBa2qDOD8tpCoo l3DaHuKthgZcE8YW4rFWzcaT+oXmB3CV5Ymgp2LwhOrd5jAWxQMx46W8J6r2dQPq1r/i 9ZZyW6ImIkpLyUobMXaiTea3ms5JlEEzTikN2AD2nX/Fshsqf42bz1kxTS1Pb8ohAJLH cw/A== 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=b42dIpKHYcMh2o6M7wOruwcfvv0uPGu8hN7+qTRYDSE=; b=CMhqueF3xYnmrlwcpW7f4hpUGLHc5nP5vu0SmFhBfoZWiT5nlkfWb7lkadUTsg7n9Y caAKdEpqkLS7S+XHn8uzG8g9dr36xE5nysfw4v/MrBRCMP9XceUv6KHQYQoym4HhlgWv /mPsc49ZS580tSR9xBJCKEYlHhLKZsPCsr0z6sKuRak3ft3tCSIf2SQMj23YNYjwXP3e 2dNLZnh0pG0SJYgJ2HnbUZEzTXwp5R4BafNgDTbCrfFZ+udSdM60WUu6A8QXsQd8W7px Z5bV/sjDWXYWPneFjZ9g2pLeOJ9jrB11S3/11ypM+a8feyFFdRPBN92Ul6nL6AFm36Dk oy+Q== X-Gm-Message-State: APjAAAWSM5eMMHMXnqMKB/SxGuACtBjSOrlBnafy+NEVBgueAgbI7iWD h6leYPI0+kGGQJfww8V5s4lZz3iX+H8= X-Google-Smtp-Source: APXvYqxqRNErjpvvAyv64X88A8NWe2ktf2bxLriqArW4jTReZcawkkbYLZEQyiNCiLeekTgK90GonQ== X-Received: by 2002:a17:902:868e:: with SMTP id g14mr40284422plo.183.1557861422596; Tue, 14 May 2019 12:17:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 14 May 2019 12:16:34 -0700 Message-Id: <20190514191653.31488-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190514191653.31488-1-richard.henderson@linaro.org> References: <20190514191653.31488-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::644 Subject: [Qemu-devel] [PATCH v7 05/24] 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: , Cc: lvivier@redhat.com, berrange@redhat.com, armbru@redhat.com 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. Reviewed-by: Laurent Vivier Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Richard Henderson --- crypto/random-platform.c | 37 ++++++++++++++++++++++++++++++++----- configure | 18 +++++++++++++++++- 2 files changed, 49 insertions(+), 6 deletions(-) diff --git a/crypto/random-platform.c b/crypto/random-platform.c index 6df40744c7..cb3ca1bc09 100644 --- a/crypto/random-platform.c +++ b/crypto/random-platform.c @@ -27,7 +27,11 @@ #include static HCRYPTPROV hCryptProv; #else -static int fd; /* a file handle to either /dev/urandom or /dev/random */ +# ifdef CONFIG_GETRANDOM +# include +# endif +/* This is -1 for getrandom(), or a file handle for /dev/{u,}random. */ +static int fd; #endif =20 int qcrypto_random_init(Error **errp) @@ -40,15 +44,20 @@ int qcrypto_random_init(Error **errp) return -1; } #else - /* TBD perhaps also add support for BSD getentropy / Linux - * getrandom syscalls directly */ +# ifdef CONFIG_GETRANDOM + if (getrandom(NULL, 0, 0) =3D=3D 0) { + /* Use getrandom() */ + fd =3D -1; + return 0; + } + /* Fall through to /dev/urandom case. */ +# endif fd =3D open("/dev/urandom", O_RDONLY | O_CLOEXEC); if (fd =3D=3D -1 && errno =3D=3D ENOENT) { fd =3D open("/dev/random", O_RDONLY | O_CLOEXEC); } - if (fd < 0) { - error_setg(errp, "No /dev/urandom or /dev/random found"); + error_setg_errno(errp, errno, "No /dev/urandom or /dev/random"); return -1; } #endif @@ -66,6 +75,24 @@ int qcrypto_random_bytes(uint8_t *buf G_GNUC_UNUSED, return -1; } #else +# ifdef CONFIG_GETRANDOM + if (likely(fd < 0)) { + while (1) { + ssize_t got =3D getrandom(buf, buflen, 0); + if (likely(got =3D=3D buflen)) { + return 0; + } + if (got >=3D 0) { + buflen -=3D got; + buf +=3D got; + } else if (errno !=3D EINTR) { + error_setg_errno(errp, errno, "getrandom"); + return -1; + } + } + } + /* Fall through to /dev/urandom case. */ +# endif while (1) { ssize_t got =3D read(fd, buf, buflen); if (likely(got =3D=3D buflen)) { diff --git a/configure b/configure index 8999698bc2..9ecec9c494 100755 --- a/configure +++ b/configure @@ -5802,6 +5802,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 @@ -7189,7 +7203,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 From nobody Sat Apr 20 08:48:15 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1557861767; cv=none; d=zoho.com; s=zohoarc; b=iCjBKur/YRuc/pHkyGYKV2Ec6LidMqTQDrRapWG2EiFU90h2NjnGj8md+M2TVHy4UfvoBow6jSmc34HuHwj/DXv1y1x20GGYrA+yUBPZNxovN1Vb8PqPTEFgLHFCoTd2gcZ2SgsnZFpzxCarAQOCGztYWn8BGT/A3H8co2YGbVs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557861767; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=z+TkCJ+Ncy1KMgA4q+7eFD+GiqzlCrNmhclplUZOTOM=; b=Uq/Y84gRh+ZoG3n9UO01K2vZ8ig+Otd4QP+oJoKGQ48vnkzuDEaIkjA6ZfmSfqzMxPYgtEGAXqKRYB+yGx+3hhExyI3lJuLuH9YwbTtjiCNnNEud7yrKDS+ZA25ZvUoTHvGsYezJ+UPAhL3J3giEP/OlYLg5t4EV+FWNPmRI3I4= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557861767855175.40926024017836; Tue, 14 May 2019 12:22:47 -0700 (PDT) Received: from localhost ([127.0.0.1]:52981 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQd0b-0006iI-PJ for importer@patchew.org; Tue, 14 May 2019 15:22:41 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48776) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcvC-0002Tm-CA for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQcvB-0006lP-Bo for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:06 -0400 Received: from mail-pg1-x543.google.com ([2607:f8b0:4864:20::543]:46900) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQcvB-0006jd-5Z for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:05 -0400 Received: by mail-pg1-x543.google.com with SMTP id t187so29177pgb.13 for ; Tue, 14 May 2019 12:17:05 -0700 (PDT) Received: from localhost.localdomain (97-113-13-231.tukw.qwest.net. [97.113.13.231]) by smtp.gmail.com with ESMTPSA id o6sm18682982pfa.88.2019.05.14.12.17.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 May 2019 12:17:03 -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=z+TkCJ+Ncy1KMgA4q+7eFD+GiqzlCrNmhclplUZOTOM=; b=PJcfjnh6iCpJv/K+c7imTedknfYbTfCH5zIPH+iNkMN/dant7wWVqX4OTZctBOiRcY 6s/unk+w2w4glf6iFG5e2j0S/laU6TYrr0w/tEmsVWS3XOk3O93Cj48FtxG3nLRWUzcI 9ScnAn1HfhnoXEl/B12uF5OORCDbgG7Z9uJP6E0ordK4k5UlubGl9lOlauQHJif4k0I6 FnnaS0WY+4eN8QEtYcPixOcHEcE7kyCWS04QuV9KLv2D9t++MuDsx+o1VWSRLAEnzsHo 4t6/sfBMfjpXkawBZSNvJuGZyEYR/Icw457AL63JJrxYm3XmYHLDenWVYsc9OFCBZAfR HDGg== 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=z+TkCJ+Ncy1KMgA4q+7eFD+GiqzlCrNmhclplUZOTOM=; b=F9Dp7A89LpFMsh2nvlKvOLjmrVweBG/esjpyGiAqPvTV1aI0DlHCfgo9PwIrMhhOnC wZ+jTM4S5T16Hl6gUs7BwnF9nuARVs/OfAPzRoh3MV25ddc4r6PEnoJEmrgH4Dk8SulR 7AQ0OjLfcp29DsRwHC7wHG63SP5J3odmovCFbyc1NKgKxObP7hHfIYzNDbS6bZKU1RLM UqzHBVhKYTAdrepdkpKIc1DutR16TZmGXaSJgSATYrC6svIbbwiDAUGhoCB0MoBdxjDA yRR8d07q9wndclDIL9RfXy5XA1PoCRYrqFaYodlG0dVtlBsTeWLmiMlA5U/ezLkgCedD HSpw== X-Gm-Message-State: APjAAAVOTC/RDDE0PceztROgF6tklR4Z1ZE6wtxErxpPcXRO3zvpC+RO bKl3OZL4r4XJRm3VeA4xDvOq2zU7nlA= X-Google-Smtp-Source: APXvYqzcsASC1zE64noQinsr0C/Jyl4EuQYBUA9Tmcmg87ZWFi89r3TD9b0I4eGPikdZg4ULk+dkNQ== X-Received: by 2002:a62:570a:: with SMTP id l10mr42189212pfb.151.1557861423815; Tue, 14 May 2019 12:17:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 14 May 2019 12:16:35 -0700 Message-Id: <20190514191653.31488-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190514191653.31488-1-richard.henderson@linaro.org> References: <20190514191653.31488-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::543 Subject: [Qemu-devel] [PATCH v7 06/24] crypto: Change the qcrypto_random_bytes buffer type to void* 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: , Cc: lvivier@redhat.com, berrange@redhat.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Using uint8_t* merely requires useless casts for use with other types to be filled with randomness. Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Richard Henderson --- include/crypto/random.h | 2 +- crypto/random-gcrypt.c | 2 +- crypto/random-gnutls.c | 2 +- crypto/random-platform.c | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/include/crypto/random.h b/include/crypto/random.h index 8764ca0562..fde592904e 100644 --- a/include/crypto/random.h +++ b/include/crypto/random.h @@ -34,7 +34,7 @@ * * Returns 0 on success, -1 on error */ -int qcrypto_random_bytes(uint8_t *buf, +int qcrypto_random_bytes(void *buf, size_t buflen, Error **errp); =20 diff --git a/crypto/random-gcrypt.c b/crypto/random-gcrypt.c index 9f1c9ee60e..7aea4ac81f 100644 --- a/crypto/random-gcrypt.c +++ b/crypto/random-gcrypt.c @@ -24,7 +24,7 @@ =20 #include =20 -int qcrypto_random_bytes(uint8_t *buf, +int qcrypto_random_bytes(void *buf, size_t buflen, Error **errp G_GNUC_UNUSED) { diff --git a/crypto/random-gnutls.c b/crypto/random-gnutls.c index 445fd6a30b..ed6c9ca12f 100644 --- a/crypto/random-gnutls.c +++ b/crypto/random-gnutls.c @@ -26,7 +26,7 @@ #include #include =20 -int qcrypto_random_bytes(uint8_t *buf, +int qcrypto_random_bytes(void *buf, size_t buflen, Error **errp) { diff --git a/crypto/random-platform.c b/crypto/random-platform.c index cb3ca1bc09..66624106fe 100644 --- a/crypto/random-platform.c +++ b/crypto/random-platform.c @@ -64,8 +64,8 @@ int qcrypto_random_init(Error **errp) return 0; } =20 -int qcrypto_random_bytes(uint8_t *buf G_GNUC_UNUSED, - size_t buflen G_GNUC_UNUSED, +int qcrypto_random_bytes(void *buf, + size_t buflen, Error **errp) { #ifdef _WIN32 --=20 2.17.1 From nobody Sat Apr 20 08:48:15 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1557861930; cv=none; d=zoho.com; s=zohoarc; b=BBtmKBaPHM29255/bfzCa5rUiMwzfMty2u0fYXs8xScy12cwCMpRKXOv9Hnh4xkqeBJxHxCYhw13WwoSYKltw9/Iv1Blhly+CjdAIRwlWqKfYBHX44tK9UfitK+Y05Vj2Y1Acnag2a6aecrk1iPHZksl8erizpT6S0GxY+SuE9o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557861930; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=zQEKMjfpCTDyJlIECnLYp610ugeuDB8/XWCLVFEbpkI=; b=PMb6MuRDiIO+5OQeB+sGIB4hS7RUM5QfUb+f+037Z7FEc9SIXwyf8qijjgseC1AiQlHK+MOmT6DurmiKUd11t1CZ9nmT8Cc/y7fdAe5NdCZZ34t3Lz3YrRz9XRXmnUcGLkXRUK4Hizpqccia7m6k/sUTHPt4LuvoCnt1EJh0UZ8= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557861930622408.014830099556; Tue, 14 May 2019 12:25:30 -0700 (PDT) Received: from localhost ([127.0.0.1]:53002 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQd3E-0000U7-90 for importer@patchew.org; Tue, 14 May 2019 15:25:24 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48789) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcvD-0002Tp-Ha for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQcvC-0006nN-H2 for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:07 -0400 Received: from mail-pf1-x443.google.com ([2607:f8b0:4864:20::443]:38184) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQcvC-0006mI-Av for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:06 -0400 Received: by mail-pf1-x443.google.com with SMTP id b76so5252pfb.5 for ; Tue, 14 May 2019 12:17:06 -0700 (PDT) Received: from localhost.localdomain (97-113-13-231.tukw.qwest.net. [97.113.13.231]) by smtp.gmail.com with ESMTPSA id o6sm18682982pfa.88.2019.05.14.12.17.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 May 2019 12:17:04 -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=zQEKMjfpCTDyJlIECnLYp610ugeuDB8/XWCLVFEbpkI=; b=HQN+QVb73V3XfZ4T2T+jb1TZWUUTrJtTo3AsjOiBVKA23D71o/rGF4bDpSh9FGB1+X HpEKtIoyEqAcW2rLhJ744tUEAI/6dQGNyUHOSIS8UEUMrXapw4HfdBYld8ohrXI5+NDX uOzLLswjmuGbciMRtFebR9PQRhG+cTPjyGCNjgmJFi+7DudOlSCO+UEIIGsLO0/aT3rZ mwxLXZl7ipPbmh0xy+iwgCRvkwrjLqLgQ193cIbJsE5If8+vV18G1M8zIQzVtkwG5NTH zBj08pw+qPAmE3Z/Z1yKforLWnlTmtvQXkN8tFhEFr6cNC2/AWEVk+eTBoytadFeB8BZ OU5A== 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=zQEKMjfpCTDyJlIECnLYp610ugeuDB8/XWCLVFEbpkI=; b=sWft/Gn+FmuvpMxEMzzzqhw3TVuAybXwXBMqPr7wwJ1ac5qIHmQcPKblvX25rBR2pN jmYy0G9vu9MWMtpYIh+mhOuyvfIiAotjs/JbyWSNkXbEkUnz80JCgVL0mGIT0koEU6X9 L3BkZwu+2H2JDKMAwuFv1kuUBme+g42hHFMX+l7f8jMAU/DpGUZjCJXfZQlVshPTEl87 WFF5PvTc8WwJ7RARoj3HDxkTdfA75MHYbum0AqSAoe6XxbUFY9NKKxdg3j9kre/WRhj4 GOnBiyU64zzfQ6P+2oUvknFQ7yMDL/clyBlunrl9EAKq4QlNTJGySg+jY3GbsAEkRYXk ym6g== X-Gm-Message-State: APjAAAVMN8E//5OAbseF7ifSKIipq40/XqCYCLzlRdSdLClupZX9l4S9 9ewM4CRWcwf93AhVU1Spn4QReVuUJzc= X-Google-Smtp-Source: APXvYqyNJINyC3CswyAdFg1BUS7nq5hIqD5TfIESPjVXE/kEesWC0OD5xyBq9RlzME/eHXjv9S+/cQ== X-Received: by 2002:a63:fa16:: with SMTP id y22mr17448pgh.15.1557861425083; Tue, 14 May 2019 12:17:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 14 May 2019 12:16:36 -0700 Message-Id: <20190514191653.31488-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190514191653.31488-1-richard.henderson@linaro.org> References: <20190514191653.31488-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::443 Subject: [Qemu-devel] [PATCH v7 07/24] ui/vnc: Split out authentication_failed 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: , Cc: lvivier@redhat.com, berrange@redhat.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) There were 3 copies of this code, one of which used the wrong data size for the failure indicator. Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Gerd Hoffmann Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Richard Henderson --- ui/vnc.c | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/ui/vnc.c b/ui/vnc.c index 1871422e1d..785edf3af1 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -2535,6 +2535,18 @@ void start_client_init(VncState *vs) vnc_read_when(vs, protocol_client_init, 1); } =20 +static void authentication_failed(VncState *vs) +{ + vnc_write_u32(vs, 1); /* Reject auth */ + if (vs->minor >=3D 8) { + static const char err[] =3D "Authentication failed"; + vnc_write_u32(vs, sizeof(err)); + vnc_write(vs, err, sizeof(err)); + } + vnc_flush(vs); + vnc_client_error(vs); +} + static void make_challenge(VncState *vs) { int i; @@ -2609,14 +2621,7 @@ static int protocol_client_auth_vnc(VncState *vs, ui= nt8_t *data, size_t len) return 0; =20 reject: - vnc_write_u32(vs, 1); /* Reject auth */ - if (vs->minor >=3D 8) { - static const char err[] =3D "Authentication failed"; - vnc_write_u32(vs, sizeof(err)); - vnc_write(vs, err, sizeof(err)); - } - vnc_flush(vs); - vnc_client_error(vs); + authentication_failed(vs); qcrypto_cipher_free(cipher); return 0; } @@ -2638,13 +2643,7 @@ static int protocol_client_auth(VncState *vs, uint8_= t *data, size_t len) * must pick the one we sent. Verify this */ if (data[0] !=3D vs->auth) { /* Reject auth */ trace_vnc_auth_reject(vs, vs->auth, (int)data[0]); - vnc_write_u32(vs, 1); - if (vs->minor >=3D 8) { - static const char err[] =3D "Authentication failed"; - vnc_write_u32(vs, sizeof(err)); - vnc_write(vs, err, sizeof(err)); - } - vnc_client_error(vs); + authentication_failed(vs); } else { /* Accept requested auth */ trace_vnc_auth_start(vs, vs->auth); switch (vs->auth) { @@ -2673,13 +2672,7 @@ static int protocol_client_auth(VncState *vs, uint8_= t *data, size_t len) =20 default: /* Should not be possible, but just in case */ trace_vnc_auth_fail(vs, vs->auth, "Unhandled auth method", ""); - vnc_write_u8(vs, 1); - if (vs->minor >=3D 8) { - static const char err[] =3D "Authentication failed"; - vnc_write_u32(vs, sizeof(err)); - vnc_write(vs, err, sizeof(err)); - } - vnc_client_error(vs); + authentication_failed(vs); } } return 0; --=20 2.17.1 From nobody Sat Apr 20 08:48:15 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1557861587; cv=none; d=zoho.com; s=zohoarc; b=FH4i+zqlVg0FF6txAe1xkZDvUwo4+9LWnsLJzifIvZZLn7qiX5maBAuxVXE/zyI08xYP4T3XLHsyIt+6ZwhRLKEzsF6JuKGqLPxSz7ahzDsN8XQpNGNUHeAdpbXoqKHZspmGP3FvPO0YL0n4ugKUYrtLsgAZn75dpsyn04IiF4k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557861587; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=DHS+azgDjOz9872pwx2wjM+spw3T8bEncaHuHvbQJSc=; b=NEMkh2jU85dvg0P6QBxUFccT0cOKYOHikealIB1xWZ7N8cQ3MCRL5hvyl+nkZLLmgNSX6pOCUxP8rxr+UD1mfoK1zG+pKWf3/OMOaP6QluxcQ7WH4fjHdozAMrh00CEGGKkXRj4XDcBszfaWK7/J5h0Uo5AnLcabwEQA+6XJ8hE= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 15578615874093.989581681577647; Tue, 14 May 2019 12:19:47 -0700 (PDT) Received: from localhost ([127.0.0.1]:52924 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcxk-0003lL-C9 for importer@patchew.org; Tue, 14 May 2019 15:19:44 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48807) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcvE-0002Tq-L9 for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQcvD-0006oQ-M5 for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:08 -0400 Received: from mail-pf1-x441.google.com ([2607:f8b0:4864:20::441]:45593) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQcvD-0006nl-Gn for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:07 -0400 Received: by mail-pf1-x441.google.com with SMTP id s11so9612709pfm.12 for ; Tue, 14 May 2019 12:17:07 -0700 (PDT) Received: from localhost.localdomain (97-113-13-231.tukw.qwest.net. [97.113.13.231]) by smtp.gmail.com with ESMTPSA id o6sm18682982pfa.88.2019.05.14.12.17.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 May 2019 12:17:05 -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=DHS+azgDjOz9872pwx2wjM+spw3T8bEncaHuHvbQJSc=; b=Vw6Ht19Cc2d0O99O4y9E/m6n5DH1o3Gac4gmuvKoHF6mzIIIqJX0fcbmXRNwQSku5V nw3E/OYtCeUDzGZQGlauJfh3ObBRa5XThIIkw7XVaCifv6N6CLNJKu6Mp+h2goGyNinl lZMEeFM8jSPfw8c8iIyG3lXULeRpIi87TMKS2oGeJfjjPslGhwlRygEM14LuD1kY9PN7 9jp0fdmo0SX7RFvapzFktNuGurDrTowL15YtjQYGg2i8R/LVPycYvHlw9AC0guZf1co/ COc6R+1D8W6c9ksEa/i2VOsoUqO1VmFalq2O4PBP4oHdqEpGlpT2IYsbRh/O3KK7H/nS 1lWw== 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=DHS+azgDjOz9872pwx2wjM+spw3T8bEncaHuHvbQJSc=; b=uHcjQidl/Hh4sHhbFiYqnjeCGjtf6NVnQAKbDerakY4ULqDPS8QGqpc/fX60ORlo6S yL7IVU6UjL6te7PVIjiDPEI1NoNoSRrExRf6eyy+cb0n1V//djbNXeu+6qyWlUXHwnzG eMyC/+HMsuXp64Df7KODnJzkHL3I3j9kkTYLleTa4zBgetgS+jteoJPyJd1iksqe9Xes ZZJ4xiRGl8qZKy6PQ//K9z3noK9PpO1ElRMOHn4KeTeX58zSGUqnwHMd/7wpGfCacclO Mew8cG4Ta4vrIRJQDYjBzXYGo+GDsJeZBuFxAGj8l7fXMMkvxZMueUJig7004YLnrfZ5 r+aw== X-Gm-Message-State: APjAAAWh/UZ7tRdAdv4uQfGoabGfnDamCqvZpmYW0aWqxljZAn+6PC6v zS/uf8VdiInbYPfvgY/5bxAvi+5o8q8= X-Google-Smtp-Source: APXvYqw8lbv3t8oCBHlpsI7gngLu6sinxqi1bc98GTxIhwPbcqZCXhym6mynVdBVRzG7kcuHyuOqIw== X-Received: by 2002:a63:690:: with SMTP id 138mr39216636pgg.415.1557861426286; Tue, 14 May 2019 12:17:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 14 May 2019 12:16:37 -0700 Message-Id: <20190514191653.31488-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190514191653.31488-1-richard.henderson@linaro.org> References: <20190514191653.31488-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::441 Subject: [Qemu-devel] [PATCH v7 08/24] ui/vnc: Use gcrypto_random_bytes for start_auth_vnc 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: , Cc: lvivier@redhat.com, berrange@redhat.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Use a better interface for random numbers than rand(). Fail gracefully if for some reason we cannot use the crypto system. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Gerd Hoffmann Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Richard Henderson --- ui/vnc.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/ui/vnc.c b/ui/vnc.c index 785edf3af1..d83f4a6ff9 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -43,6 +43,7 @@ #include "crypto/hash.h" #include "crypto/tlscredsanon.h" #include "crypto/tlscredsx509.h" +#include "crypto/random.h" #include "qom/object_interfaces.h" #include "qemu/cutils.h" #include "io/dns-resolver.h" @@ -2547,16 +2548,6 @@ static void authentication_failed(VncState *vs) vnc_client_error(vs); } =20 -static void make_challenge(VncState *vs) -{ - int i; - - srand(time(NULL)+getpid()+getpid()*987654+rand()); - - for (i =3D 0 ; i < sizeof(vs->challenge) ; i++) - vs->challenge[i] =3D (int) (256.0*rand()/(RAND_MAX+1.0)); -} - static int protocol_client_auth_vnc(VncState *vs, uint8_t *data, size_t le= n) { unsigned char response[VNC_AUTH_CHALLENGE_SIZE]; @@ -2628,7 +2619,16 @@ reject: =20 void start_auth_vnc(VncState *vs) { - make_challenge(vs); + Error *err =3D NULL; + + if (qcrypto_random_bytes(vs->challenge, sizeof(vs->challenge), &err)) { + trace_vnc_auth_fail(vs, vs->auth, "cannot get random bytes", + error_get_pretty(err)); + error_free(err); + authentication_failed(vs); + return; + } + /* Send client a 'random' challenge */ vnc_write(vs, vs->challenge, sizeof(vs->challenge)); vnc_flush(vs); --=20 2.17.1 From nobody Sat Apr 20 08:48:15 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1557862117; cv=none; d=zoho.com; s=zohoarc; b=l/KoylAYUl7gO4PCsJEeqgDXYIhcI0jlB4wUD8M3SOQNpfWs4WQ1y+uMLxsWedqPZ7vVGbOy6fI47qBIYrUTkkja2Brh6O+3cHOfSPtzvENhQxY9PjW8lBOiEEsHDX+5/fQCU4A7KpB+1KMyRFNsJBG7++c+N8mnd31248DW1/I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557862117; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=4MrsM8HWkl5HnptGJNmid/oZc3Q7MB8Exr59LxaGIMY=; b=og4pznn5+g+ZJCeai/mx/nrQqISQfNfGB9esN1mnQBOybVsBSLIv03+M7rzo7VKieNMCKVTsGD3bueMo10G0GvIWdAXEhzE0XgWUiQtH1l8ZdX6x9wQ4nZfFG3comU45ToHmM63JeTUyJZ5ZIhZYvWnGaGfaZ+Si1kC6vJiQmGo= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557862117666546.325627622739; Tue, 14 May 2019 12:28:37 -0700 (PDT) Received: from localhost ([127.0.0.1]:53066 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQd6I-0003g4-Ii for importer@patchew.org; Tue, 14 May 2019 15:28:34 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48823) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcvG-0002Tw-Ok for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQcvF-0006qM-Cs for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:10 -0400 Received: from mail-pf1-x444.google.com ([2607:f8b0:4864:20::444]:42945) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQcvF-0006po-5i for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:09 -0400 Received: by mail-pf1-x444.google.com with SMTP id 13so9631937pfw.9 for ; Tue, 14 May 2019 12:17:09 -0700 (PDT) Received: from localhost.localdomain (97-113-13-231.tukw.qwest.net. [97.113.13.231]) by smtp.gmail.com with ESMTPSA id o6sm18682982pfa.88.2019.05.14.12.17.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 May 2019 12:17:06 -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=4MrsM8HWkl5HnptGJNmid/oZc3Q7MB8Exr59LxaGIMY=; b=Lhi3bjFT32r1L9f70/VFnAglrOjySbukTfUoGsiyENHbf3yn66vSSH2rV146cwakqO R+XTfSQq8xShD9Qx6uH4BxPxbO+U22srS+UVqKLQF7+rxRCW2rLrUKiFpAUh6/Xd6moe +A/FCgjFR8VhDPdqJvHeerGvArXb3yVbplvbVYJIpvNLL8sVs9Mi63oU9/GVTArSj4d0 ITxYfSvrYleB2LdEIiwqEnQ0VnQNLmleQqCNCCSQZPGK0nSH3ZPZyeX++jEveL0Tgqmn N4BWkgokfCeA3gJySg+p9amVjNJQe1At1VpNJXa2jxxRLNAeBN+Vmqnx6y2ZRSDfgDDy q1CA== 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=4MrsM8HWkl5HnptGJNmid/oZc3Q7MB8Exr59LxaGIMY=; b=hKC/+RF8oMBvhaTApUXunEvVc5W24ncYOIRzJwz6qBBCL95xa1A1KpJq83aVRTYRy5 hG/EKfIGsyI+AuTswk8sL7AJhhbVZz9oPQ4+sUYAJjaPg5MgXciWkgs23y31EE+jQrXE DfQ2TZ2jitaZ2AdP+1EEaHHXZ4/0Tfz9oPXKX7cLXvF/6U8DxWvisloBQ1X9grKv2AlO 1Ewrzq9rtMLM1TFKs0T+ZC6Uz3Q99g6vSDa2AGJOr/1eFxHoYIIpu4HBUfEsrNU41/HP BhIGpzNdv1wG5y4siA30lVb125FIO+t/22sURjJ9t5+zecClGgTdH6pfL9dJGQHjBZtm 54Bw== X-Gm-Message-State: APjAAAXPu+X+U0lp7sBXI9SzTW/DZwDlYvr00Ka7BEn2VfwwqxPtMAqb XHzZj98Fb3KNyGxSSbpfl+D8Sj94qQ4= X-Google-Smtp-Source: APXvYqwm3im4htajCMx66r8XAvjHowzzRlhZ9Wbnp76Gih5okgfyD0H50wjRsOecHSpm3gkqezpUQQ== X-Received: by 2002:a62:7a8f:: with SMTP id v137mr42687906pfc.243.1557861427693; Tue, 14 May 2019 12:17:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 14 May 2019 12:16:38 -0700 Message-Id: <20190514191653.31488-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190514191653.31488-1-richard.henderson@linaro.org> References: <20190514191653.31488-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::444 Subject: [Qemu-devel] [PATCH v7 09/24] util: Add qemu_guest_getrandom and associated routines 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: , Cc: lvivier@redhat.com, berrange@redhat.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) This routine is intended to produce high-quality random numbers to the guest. Normally, such numbers are crypto quality from the host, but a command-line option can force the use of a fully deterministic sequence for use while debugging. Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Richard Henderson --- include/qemu/guest-random.h | 68 +++++++++++++++++++++++++++ util/guest-random.c | 93 +++++++++++++++++++++++++++++++++++++ util/Makefile.objs | 1 + 3 files changed, 162 insertions(+) create mode 100644 include/qemu/guest-random.h create mode 100644 util/guest-random.c diff --git a/include/qemu/guest-random.h b/include/qemu/guest-random.h new file mode 100644 index 0000000000..09ff9c2236 --- /dev/null +++ b/include/qemu/guest-random.h @@ -0,0 +1,68 @@ +/* + * QEMU guest-visible random functions + * + * Copyright 2019 Linaro, Ltd. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the F= ree + * Software Foundation; either version 2 of the License, or (at your optio= n) + * any later version. + */ + +#ifndef QEMU_GUEST_RANDOM_H +#define QEMU_GUEST_RANDOM_H + +/** + * qemu_guest_random_seed_main(const char *optarg, Error **errp) + * @optarg: a non-NULL pointer to a C string + * @errp: an error indicator + * + * The @optarg value is that which accompanies the -seed argument. + * This forces qemu_guest_getrandom into deterministic mode. + * + * Returns 0 on success, < 0 on failure while setting *errp. + */ +int qemu_guest_random_seed_main(const char *optarg, Error **errp); + +/** + * qemu_guest_random_seed_thread_part1(void) + * + * If qemu_getrandom is in deterministic mode, returns an + * independent seed for the new thread. Otherwise returns 0. + */ +uint64_t qemu_guest_random_seed_thread_part1(void); + +/** + * qemu_guest_random_seed_thread_part2(uint64_t seed) + * @seed: a value for the new thread. + * + * If qemu_guest_getrandom is in deterministic mode, this stores an + * independent seed for the new thread. Otherwise a no-op. + */ +void qemu_guest_random_seed_thread_part2(uint64_t seed); + +/** + * qemu_guest_getrandom(void *buf, size_t len, Error **errp) + * @buf: a buffer of bytes to be written + * @len: the number of bytes in @buf + * @errp: an error indicator + * + * Fills len bytes in buf with random data. This should only be used + * for data presented to the guest. Host-side crypto services should + * use qcrypto_random_bytes. + * + * Returns 0 on success, < 0 on failure while setting *errp. + */ +int qemu_guest_getrandom(void *buf, size_t len, Error **errp); + +/** + * qemu_guest_getrandom_nofail(void *buf, size_t len) + * @buf: a buffer of bytes to be written + * @len: the number of bytes in @buf + * + * Like qemu_guest_getrandom, but will assert for failure. + * Use this when there is no reasonable recovery. + */ +void qemu_guest_getrandom_nofail(void *buf, size_t len); + +#endif /* QEMU_GUEST_RANDOM_H */ diff --git a/util/guest-random.c b/util/guest-random.c new file mode 100644 index 0000000000..e8124a3cad --- /dev/null +++ b/util/guest-random.c @@ -0,0 +1,93 @@ +/* + * QEMU guest-visible random functions + * + * Copyright 2019 Linaro, Ltd. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the F= ree + * Software Foundation; either version 2 of the License, or (at your optio= n) + * any later version. + */ + +#include "qemu/osdep.h" +#include "qemu-common.h" +#include "qemu/cutils.h" +#include "qapi/error.h" +#include "qemu/guest-random.h" +#include "crypto/random.h" + + +static __thread GRand *thread_rand; +static bool deterministic; + + +static int glib_random_bytes(void *buf, size_t len) +{ + GRand *rand =3D thread_rand; + size_t i; + uint32_t x; + + if (unlikely(rand =3D=3D NULL)) { + /* Thread not initialized for a cpu, or main w/o -seed. */ + thread_rand =3D rand =3D g_rand_new(); + } + + for (i =3D 0; i + 4 <=3D len; i +=3D 4) { + x =3D g_rand_int(rand); + __builtin_memcpy(buf + i, &x, 4); + } + if (i < len) { + x =3D g_rand_int(rand); + __builtin_memcpy(buf + i, &x, i - len); + } + return 0; +} + +int qemu_guest_getrandom(void *buf, size_t len, Error **errp) +{ + if (unlikely(deterministic)) { + /* Deterministic implementation using Glib's Mersenne Twister. */ + return glib_random_bytes(buf, len); + } else { + /* Non-deterministic implementation using crypto routines. */ + return qcrypto_random_bytes(buf, len, errp); + } +} + +void qemu_guest_getrandom_nofail(void *buf, size_t len) +{ + qemu_guest_getrandom(buf, len, &error_fatal); +} + +uint64_t qemu_guest_random_seed_thread_part1(void) +{ + if (deterministic) { + uint64_t ret; + glib_random_bytes(&ret, sizeof(ret)); + return ret; + } + return 0; +} + +void qemu_guest_random_seed_thread_part2(uint64_t seed) +{ + g_assert(thread_rand =3D=3D NULL); + if (deterministic) { + thread_rand =3D + g_rand_new_with_seed_array((const guint32 *)&seed, + sizeof(seed) / sizeof(guint32)); + } +} + +int qemu_guest_random_seed_main(const char *optarg, Error **errp) +{ + unsigned long long seed; + if (parse_uint_full(optarg, &seed, 0)) { + error_setg(errp, "Invalid seed number: %s", optarg); + return -1; + } else { + deterministic =3D true; + qemu_guest_random_seed_thread_part2(seed); + return 0; + } +} diff --git a/util/Makefile.objs b/util/Makefile.objs index 9206878dec..c27a923dbe 100644 --- a/util/Makefile.objs +++ b/util/Makefile.objs @@ -54,5 +54,6 @@ util-obj-y +=3D iova-tree.o util-obj-$(CONFIG_INOTIFY1) +=3D filemonitor-inotify.o util-obj-$(CONFIG_LINUX) +=3D vfio-helpers.o util-obj-$(CONFIG_OPENGL) +=3D drm.o +util-obj-y +=3D guest-random.o =20 stub-obj-y +=3D filemonitor-stub.o --=20 2.17.1 From nobody Sat Apr 20 08:48:15 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1557862088; cv=none; d=zoho.com; s=zohoarc; b=N9ApGIBXc+lG/seSBRwdSzuitHT8MKfPWwAYrpMRRcjvWL4ebaRNK5N8rDJJCudlsGatqGa+CuZhb/sFkr++F2rJK9UAXuLz6k3Mw/vVN/Ot1+l6GjXlQRb81bE4PGjsUnxZHtTl+45mFbucACO2eUvPtiOHdyhOQ61RfROfvHc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557862088; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=CCvph4F0+gsWZSKZYyRUd00rEVqCU0cysWzx7Ki8dAo=; b=P+RkDSSb8DKxp+UEh0VEHgdXVg2vVvhAGqFW03unB9PoAEMMvSJeak9CwXdr+qWu+nsv+XpmpPFAe5p2su5csGyAppcUI2U1Z+Mt2CmxmuHIIjKxVrHfXzPEeOdVfsEjuVN3oiMdmKMsC59Wtb5V5lXYau4jX9AznNAjVWJQgeU= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557862088808266.5312996061484; Tue, 14 May 2019 12:28:08 -0700 (PDT) Received: from localhost ([127.0.0.1]:53062 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQd5m-0003Cu-L6 for importer@patchew.org; Tue, 14 May 2019 15:28:02 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48830) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcvH-0002Uj-FS for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQcvG-0006r4-BV for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:11 -0400 Received: from mail-pg1-x544.google.com ([2607:f8b0:4864:20::544]:42779) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQcvG-0006qd-53 for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:10 -0400 Received: by mail-pg1-x544.google.com with SMTP id 145so38402pgg.9 for ; Tue, 14 May 2019 12:17:10 -0700 (PDT) Received: from localhost.localdomain (97-113-13-231.tukw.qwest.net. [97.113.13.231]) by smtp.gmail.com with ESMTPSA id o6sm18682982pfa.88.2019.05.14.12.17.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 May 2019 12:17:08 -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=CCvph4F0+gsWZSKZYyRUd00rEVqCU0cysWzx7Ki8dAo=; b=jEtx2JdfSEnx9wg7IUoABEvgcTiDkClNISLTjxkFd1xs3ygY/erYGhuPNuKzbok7wY 9zg1++DiysYh58F6krddQ06B7PN/nODTb0wihz5dV5XmVMzW5yePW70gCx7sySeES1AJ e0PEmUzBuai1f62E6AtPzQSVx5TFy4C5iRATdKryKLJkuI2W7Vwq55Pd0O79qxxAl1CA wDWbrMGI3IjAfhJ6Nm6f3YGU5vLsOimPN7kvGn881rk7x+fGwcR42lqtK7LH2eTBE4Cj MTMSjMOtOZQpRClbC4MHR5zcESZpfKuA55f1avXEFCKf4y4mfs83rdpTg8AAkgUokhSw KX0A== 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=CCvph4F0+gsWZSKZYyRUd00rEVqCU0cysWzx7Ki8dAo=; b=n59hbWQNVm/VOsLTyvZFr6u1bNQyuI6YB3/OKag09BvtuNiVsQpyv2X5VfUcN2aBji mzG5NoIZ2CBafDjsyzmLc8I1OhS//RrGze2OKfWYHEwfIzUnxsSdvfI13epGxA97QIkX XXF6LLUEuU6/pgCD6/lEXRufQfu7YkibZe4J8duGBkBNPAiLp168ZyXyjTv3n3g3dqCA jtwZpl9HBrOQilb2xP+bEZvVeUQrIklmp7CyuODDXgXjXAZ3dvO/QFAhCa071CFRuQyZ +W982rMi6VLzrQHoCQTGJqIhoFswDDIxLiVCzvdHqejIMgZPJNDsq9lO3EIHmcVnYbrz gw/g== X-Gm-Message-State: APjAAAWcGQJ7xDTzzt4aIA9l6V/11FFP9bqwnBUStpKfbeF+F0y2KCVd aL2nC+jYY+I0N9lVw2Kxy2B7I8ARioQ= X-Google-Smtp-Source: APXvYqyWcnHHVLdPBhA/OkZqiRX5q8MX0hJ6z9sQpE4ypTnMaFpduH91axDmmNxBx3Ex5x6XAuPwrQ== X-Received: by 2002:a63:5cb:: with SMTP id 194mr40132251pgf.294.1557861428923; Tue, 14 May 2019 12:17:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 14 May 2019 12:16:39 -0700 Message-Id: <20190514191653.31488-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190514191653.31488-1-richard.henderson@linaro.org> References: <20190514191653.31488-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::544 Subject: [Qemu-devel] [PATCH v7 10/24] cpus: Initialize pseudo-random seeds for all guest cpus 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: , Cc: lvivier@redhat.com, berrange@redhat.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) When the -seed option is given, call qemu_guest_random_seed_main, putting the subsystem into deterministic mode. Pass derived seeds to each cpu created; which is a no-op unless the subsystem is in deterministic mode. Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Richard Henderson --- include/qom/cpu.h | 1 + cpus.c | 9 +++++++++ vl.c | 4 ++++ qemu-options.hx | 10 ++++++++++ 4 files changed, 24 insertions(+) diff --git a/include/qom/cpu.h b/include/qom/cpu.h index 08abcbd3fe..9793ec39bc 100644 --- a/include/qom/cpu.h +++ b/include/qom/cpu.h @@ -369,6 +369,7 @@ struct CPUState { int singlestep_enabled; int64_t icount_budget; int64_t icount_extra; + uint64_t random_seed; sigjmp_buf jmp_env; =20 QemuMutex work_mutex; diff --git a/cpus.c b/cpus.c index e58e7ab0f6..ffc57119ca 100644 --- a/cpus.c +++ b/cpus.c @@ -50,6 +50,7 @@ #include "qemu/option.h" #include "qemu/bitmap.h" #include "qemu/seqlock.h" +#include "qemu/guest-random.h" #include "tcg.h" #include "hw/nmi.h" #include "sysemu/replay.h" @@ -1276,6 +1277,7 @@ static void *qemu_kvm_cpu_thread_fn(void *arg) /* signal CPU creation */ cpu->created =3D true; qemu_cond_signal(&qemu_cpu_cond); + qemu_guest_random_seed_thread_part2(cpu->random_seed); =20 do { if (cpu_can_run(cpu)) { @@ -1319,6 +1321,7 @@ static void *qemu_dummy_cpu_thread_fn(void *arg) /* signal CPU creation */ cpu->created =3D true; qemu_cond_signal(&qemu_cpu_cond); + qemu_guest_random_seed_thread_part2(cpu->random_seed); =20 do { qemu_mutex_unlock_iothread(); @@ -1478,6 +1481,7 @@ static void *qemu_tcg_rr_cpu_thread_fn(void *arg) cpu->created =3D true; cpu->can_do_io =3D 1; qemu_cond_signal(&qemu_cpu_cond); + qemu_guest_random_seed_thread_part2(cpu->random_seed); =20 /* wait for initial kick-off after machine start */ while (first_cpu->stopped) { @@ -1592,6 +1596,7 @@ static void *qemu_hax_cpu_thread_fn(void *arg) =20 hax_init_vcpu(cpu); qemu_cond_signal(&qemu_cpu_cond); + qemu_guest_random_seed_thread_part2(cpu->random_seed); =20 do { if (cpu_can_run(cpu)) { @@ -1631,6 +1636,7 @@ static void *qemu_hvf_cpu_thread_fn(void *arg) /* signal CPU creation */ cpu->created =3D true; qemu_cond_signal(&qemu_cpu_cond); + qemu_guest_random_seed_thread_part2(cpu->random_seed); =20 do { if (cpu_can_run(cpu)) { @@ -1671,6 +1677,7 @@ static void *qemu_whpx_cpu_thread_fn(void *arg) /* signal CPU creation */ cpu->created =3D true; qemu_cond_signal(&qemu_cpu_cond); + qemu_guest_random_seed_thread_part2(cpu->random_seed); =20 do { if (cpu_can_run(cpu)) { @@ -1724,6 +1731,7 @@ static void *qemu_tcg_cpu_thread_fn(void *arg) cpu->can_do_io =3D 1; current_cpu =3D cpu; qemu_cond_signal(&qemu_cpu_cond); + qemu_guest_random_seed_thread_part2(cpu->random_seed); =20 /* process any pending work */ cpu->exit_request =3D 1; @@ -2071,6 +2079,7 @@ void qemu_init_vcpu(CPUState *cpu) cpu->nr_cores =3D smp_cores; cpu->nr_threads =3D smp_threads; cpu->stopped =3D true; + cpu->random_seed =3D qemu_guest_random_seed_thread_part1(); =20 if (!cpu->as) { /* If the target cpu hasn't set up any address spaces itself, diff --git a/vl.c b/vl.c index b6709514c1..e1d75a047f 100644 --- a/vl.c +++ b/vl.c @@ -128,6 +128,7 @@ int main(int argc, char **argv) #include "qapi/qapi-commands-ui.h" #include "qapi/qmp/qerror.h" #include "sysemu/iothread.h" +#include "qemu/guest-random.h" =20 #define MAX_VIRTIO_CONSOLES 1 =20 @@ -3347,6 +3348,9 @@ int main(int argc, char **argv, char **envp) case QEMU_OPTION_DFILTER: qemu_set_dfilter_ranges(optarg, &error_fatal); break; + case QEMU_OPTION_seed: + qemu_guest_random_seed_main(optarg, &error_fatal); + break; case QEMU_OPTION_s: add_device_config(DEV_GDB, "tcp::" DEFAULT_GDBSTUB_PORT); break; diff --git a/qemu-options.hx b/qemu-options.hx index 51802cbb26..0191ef8b1e 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -3601,6 +3601,16 @@ the 0x200 sized block starting at 0xffffffc000080000= and another 0x1000 sized block starting at 0xffffffc00005f000. ETEXI =20 +DEF("seed", HAS_ARG, QEMU_OPTION_seed, \ + "-seed number seed the pseudo-random number generator\n", + QEMU_ARCH_ALL) +STEXI +@item -seed @var{number} +@findex -seed +Force the guest to use a deterministic pseudo-random number generator, see= ded +with @var{number}. This does not affect crypto routines within the host. +ETEXI + DEF("L", HAS_ARG, QEMU_OPTION_L, \ "-L path set the directory for the BIOS, VGA BIOS and keymaps\= n", QEMU_ARCH_ALL) --=20 2.17.1 From nobody Sat Apr 20 08:48:15 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1557861761; cv=none; d=zoho.com; s=zohoarc; b=cGYwbfjluR30gPM3/2By/KX8v4VG1dJc6HOZfxQSVeMeemLXo/Rrxm0C4A6uBBGRsH7nWyc4bGDay9EHL0FTKOoe835+x6qXtH5g6z+L1KDz1roPsvmrz8OjteXOprCE9vlHG1mA6GusjfeGowAIkVnqhSVaqMPaqMF6bWUOPKs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557861761; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=xy1OktLeK7/mJWPw/JMSGUFtW6+kUG05ru+wLl6Tmjo=; b=nOripF8QmR62XbJnmcsXW6wIF9mHNNf62T/hmDJsFNLPfxMioo93M/yHvF6b0llaXeCXlj9xjpmh7jPMDaR2IcmI3ZJqVQzxbOR8pVR7XLkOD07z7Un9jUUlLIkGeAJfcjo2qoVyJtR2W07X9bl6fn+B0X65eRWl4YTLv4/U0p4= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557861761270877.0997283950076; Tue, 14 May 2019 12:22:41 -0700 (PDT) Received: from localhost ([127.0.0.1]:52979 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQd0Y-0006f9-35 for importer@patchew.org; Tue, 14 May 2019 15:22:38 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48849) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcvI-0002W8-TC for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQcvH-0006sg-Pm for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:12 -0400 Received: from mail-pf1-x442.google.com ([2607:f8b0:4864:20::442]:38184) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQcvH-0006rT-JI for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:11 -0400 Received: by mail-pf1-x442.google.com with SMTP id b76so5329pfb.5 for ; Tue, 14 May 2019 12:17:11 -0700 (PDT) Received: from localhost.localdomain (97-113-13-231.tukw.qwest.net. [97.113.13.231]) by smtp.gmail.com with ESMTPSA id o6sm18682982pfa.88.2019.05.14.12.17.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 May 2019 12:17:09 -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=xy1OktLeK7/mJWPw/JMSGUFtW6+kUG05ru+wLl6Tmjo=; b=llixhV8s2IXNRYJyRFtKp14FjEtBz7C44GLPCmGS70qLY5BIDc0Pgwhek+5l0GJD2b GZD4F76T6qPe3RKOFELuf5+aWqIaZzgfke9bXCHJxNcr8bmZu2FqzSg6h2es1eDtBGxz PNV0JNX+o8nhp7y5y3vPiglzXelbBQSxJCY9847n2iykzuD8RK/LRDjvZ2P57wU7wzrV xQ/A4lvbGszCGWwMi8kganW0l0VDm7ARww5rr9l4quubcar4IsF35ZpEHk16zKOCjOFw MUPuKxZy5HsbMSVgaAtQBvoWDAjH8jKH5BPswX4Ge6d1r2wOnrT+OuIrA4pmNE2PCeD8 EsNQ== 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=xy1OktLeK7/mJWPw/JMSGUFtW6+kUG05ru+wLl6Tmjo=; b=mkyRK7kb3nCBUf/IyAFI4LasQWR7FME23wcsoywcq7qG/puMtOLjwnCdwUMtD/dUaD O4j7tUoW22nVXTwBBmodaAO8wocVO9EgCpJkQiIjljk2Hb0Lo/CwpuLux8iDfwuRZKTi RmajtfBpArnG8H3J7t4JhbF3IGgUEYsvWBJlzysbnPxkYfIyvoLgTWeedTa9FQqlVIn9 3IJrTaRzgiSCKuC3RBugovVWNYUj2v5tnIvb7PKqCUfQJCx6yebfiEi5IkjO6PLPY6xo gjmNc2zBSeMQ1CA1cDKpwzrV4YJ4AuY/UsjoaWnauPHMCTEyuJjfqe/I5FUwiWFsnzb7 e6Tg== X-Gm-Message-State: APjAAAV6tiaRzbiY9ug3ser9GgYZs+EYdH7WVnEZuqhYgDd2m6K/CZ7X 85kPi82QkibohI85P5UIVuyJb5qvTrc= X-Google-Smtp-Source: APXvYqyMIVejzT99QMaP8Q3TIHEsbmTk2As5aX4etKVj03AkFzT/B4ckMGGki7YjTZigBB66OpdgVw== X-Received: by 2002:a62:1b85:: with SMTP id b127mr14346929pfb.165.1557861430208; Tue, 14 May 2019 12:17:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 14 May 2019 12:16:40 -0700 Message-Id: <20190514191653.31488-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190514191653.31488-1-richard.henderson@linaro.org> References: <20190514191653.31488-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::442 Subject: [Qemu-devel] [PATCH v7 11/24] linux-user: Initialize pseudo-random seeds for all guest cpus 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: , Cc: lvivier@redhat.com, berrange@redhat.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) When the -seed option is given, call qemu_guest_random_seed_main, putting the subsystem into deterministic mode. Pass derived seeds to each cpu created during clone; which is a no-op unless the subsystem is in deterministic mode. Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- linux-user/main.c | 30 +++++++++++++++++++----------- linux-user/syscall.c | 3 +++ 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/linux-user/main.c b/linux-user/main.c index 3d2230320b..7e704845c0 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -34,6 +34,7 @@ #include "tcg.h" #include "qemu/timer.h" #include "qemu/envlist.h" +#include "qemu/guest-random.h" #include "elf.h" #include "trace/control.h" #include "target_elf.h" @@ -48,6 +49,7 @@ static int gdbstub_port; static envlist_t *envlist; static const char *cpu_model; static const char *cpu_type; +static const char *seed_optarg; unsigned long mmap_min_addr; unsigned long guest_base; int have_guest_base; @@ -290,15 +292,9 @@ static void handle_arg_pagesize(const char *arg) } } =20 -static void handle_arg_randseed(const char *arg) +static void handle_arg_seed(const char *arg) { - unsigned long long seed; - - if (parse_uint_full(arg, &seed, 0) !=3D 0 || seed > UINT_MAX) { - fprintf(stderr, "Invalid seed number: %s\n", arg); - exit(EXIT_FAILURE); - } - srand(seed); + seed_optarg =3D arg; } =20 static void handle_arg_gdb(const char *arg) @@ -433,7 +429,7 @@ static const struct qemu_argument arg_table[] =3D { "", "run in singlestep mode"}, {"strace", "QEMU_STRACE", false, handle_arg_strace, "", "log system calls"}, - {"seed", "QEMU_RAND_SEED", true, handle_arg_randseed, + {"seed", "QEMU_RAND_SEED", true, handle_arg_seed, "", "Seed for pseudo-random number generator"}, {"trace", "QEMU_TRACE", true, handle_arg_trace, "", "[[enable=3D]][,events=3D][,file=3D]"}, @@ -689,8 +685,20 @@ int main(int argc, char **argv, char **envp) do_strace =3D 1; } =20 - if (getenv("QEMU_RAND_SEED")) { - handle_arg_randseed(getenv("QEMU_RAND_SEED")); + if (seed_optarg =3D=3D NULL) { + seed_optarg =3D getenv("QEMU_RAND_SEED"); + } + if (seed_optarg !=3D NULL) { + unsigned long long seed; + + /* This will go away with the last user of rand(). */ + if (parse_uint_full(seed_optarg, &seed, 0) !=3D 0) { + fprintf(stderr, "Invalid seed number: %s\n", seed_optarg); + exit(EXIT_FAILURE); + } + srand(seed); + + qemu_guest_random_seed_main(seed_optarg, &error_fatal); } =20 target_environ =3D envlist_to_environ(envlist, NULL); diff --git a/linux-user/syscall.c b/linux-user/syscall.c index f5ff6f5dc8..96f20886ce 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -107,6 +107,7 @@ #include "uname.h" =20 #include "qemu.h" +#include "qemu/guest-random.h" #include "fd-trans.h" =20 #ifndef CLONE_IO @@ -5482,6 +5483,7 @@ static void *clone_func(void *arg) put_user_u32(info->tid, info->child_tidptr); if (info->parent_tidptr) put_user_u32(info->tid, info->parent_tidptr); + qemu_guest_random_seed_thread_part2(cpu->random_seed); /* Enable signals. */ sigprocmask(SIG_SETMASK, &info->sigmask, NULL); /* Signal to the parent that we're ready. */ @@ -5568,6 +5570,7 @@ static int do_fork(CPUArchState *env, unsigned int fl= ags, abi_ulong newsp, initializing, so temporarily block all signals. */ sigfillset(&sigmask); sigprocmask(SIG_BLOCK, &sigmask, &info.sigmask); + cpu->random_seed =3D qemu_guest_random_seed_thread_part1(); =20 /* If this is our first additional thread, we need to ensure we * generate code for parallel execution and flush old translations. --=20 2.17.1 From nobody Sat Apr 20 08:48:15 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1557861930; cv=none; d=zoho.com; s=zohoarc; b=Y9ZeQLgkrumQn4Mo80gWEihjO2IIv3YExvZND6LLOk7fBU3qsaiiDvvCa7+zfgVNJ/cbCoAOBIdcuFW/5dJlu3nZ1Nsk0noWEAcTffDodFaOUgq8bDIaLTXCAjs9t6OTribCMg8hXypnNhOX4qxjDpjVUG32sonutP6pxBtZT68= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557861930; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=bfHw/AF++9CIdfuqFxIkDwoY841o6ilZtdRCC2o4SUw=; b=iRvoTUt3Bc396or1Y7zgJVaeMo9/yDgQgvfHbhPuSKmwYpTR1v4WGHTSkqhNfedqzEgtiqLeb6KOCpI0APsFIMX9jfnMPTd82sLfjnhI/i8xCMOCNtFLQjR9XcL3lxx95Zwmu5rvm2CSn1QlUxq7GdpfRSruD+NCPa2Pp/toHYQ= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557861930380476.52237079245776; Tue, 14 May 2019 12:25:30 -0700 (PDT) Received: from localhost ([127.0.0.1]:53004 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQd3G-0000Wz-BZ for importer@patchew.org; Tue, 14 May 2019 15:25:26 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48858) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcvJ-0002Wz-Lw for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQcvI-0006tu-Oz for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:13 -0400 Received: from mail-pl1-x643.google.com ([2607:f8b0:4864:20::643]:46218) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQcvI-0006t6-JG for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:12 -0400 Received: by mail-pl1-x643.google.com with SMTP id r18so59356pls.13 for ; Tue, 14 May 2019 12:17:12 -0700 (PDT) Received: from localhost.localdomain (97-113-13-231.tukw.qwest.net. [97.113.13.231]) by smtp.gmail.com with ESMTPSA id o6sm18682982pfa.88.2019.05.14.12.17.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 May 2019 12:17:10 -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=bfHw/AF++9CIdfuqFxIkDwoY841o6ilZtdRCC2o4SUw=; b=IlFGJF3SuvPZpd2kbuEV+UtXwl1IWbTNWyUv62+k/g3kkbM8ML1HEH2MD+7xuqElPH oNsASmfjTCPtVn+MXD1Iy+HDwUmhX5L2KY45qXgpgIob+HXKTyU9vIpao1LUWWrPwBTQ M6TFz63lEed/f5qop86lfiU+7H9azglnYhguYOknSS7LuOSWKUZnEK61dkRhCK/ZY/XF AB11SKS8UhSA4HMAl9bZyTb3hS/P2AJBEWW4cdOSaMMvj6bneq/NyThIVoDnPipUv7rq xwUrfsMoFEBaFFourdIXkw6vdGFk8/NNQmIgqtsDEX9s4RXKJoHkrEDGiZjz/eWCZRGB 4tTw== 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=bfHw/AF++9CIdfuqFxIkDwoY841o6ilZtdRCC2o4SUw=; b=VYmOCn+dvu4AqYEbvEwf1+FSWcRM+0uVoc1qjJOmGQVMCXmPNBiA7bD6ze1HjGE8bi IbtL/jjxCME2qnE27J+QZ2apk7zxLQCLxCWbXYr2CxFCTo9kRuMchjWVdBdbOTh1cEqz dpl4TODq0QjdS6/MFsa6G7ysDpKuB218pzI/noqJdb4nkxendP0KKlTBNMyBso1mm/gE iUoKoeDTfMvViFym4WYpBSWYqkuvi5faVDEkiCqUJPMRDDs/Qncs6Q9E2ESwvUfWGoDQ 1FEakH434qeiitdO5xGS8Y1FiCqaFbn5ivUukCgA0c+iWERVxSjDc3dulWPi6nvWsSRI XguQ== X-Gm-Message-State: APjAAAU5zCyA0oIgYAOHdl1XNNPa/pII5g+dzwB1+4rgIL1v86XmHWup /APU2UcFCgn/YY3aIB6UacAJX4pKnWg= X-Google-Smtp-Source: APXvYqzPnCA6ZpPQSOTWE2yiVVL7QRt3TzeWNdAuH10EN7apkeHAchfOT4C/r+kSP8WceXOQNSTHsg== X-Received: by 2002:a17:902:1ea:: with SMTP id b97mr13615843plb.317.1557861431367; Tue, 14 May 2019 12:17:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 14 May 2019 12:16:41 -0700 Message-Id: <20190514191653.31488-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190514191653.31488-1-richard.henderson@linaro.org> References: <20190514191653.31488-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::643 Subject: [Qemu-devel] [PATCH v7 12/24] linux-user: Call qcrypto_random_init if not using -seed 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: , Cc: lvivier@redhat.com, berrange@redhat.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) When not using -seed, we will use the random part of the crypto subsystem. For softmmu, we initialize the full qcrypto_init, because we use crypto for reasons other than random numbers. Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- linux-user/main.c | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/linux-user/main.c b/linux-user/main.c index 7e704845c0..4c72f07555 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -39,6 +39,7 @@ #include "trace/control.h" #include "target_elf.h" #include "cpu_loop-common.h" +#include "crypto/random.h" =20 char *exec_path; =20 @@ -688,17 +689,26 @@ int main(int argc, char **argv, char **envp) if (seed_optarg =3D=3D NULL) { seed_optarg =3D getenv("QEMU_RAND_SEED"); } - if (seed_optarg !=3D NULL) { - unsigned long long seed; + { + Error *err =3D NULL; + if (seed_optarg !=3D NULL) { + unsigned long long seed; =20 - /* This will go away with the last user of rand(). */ - if (parse_uint_full(seed_optarg, &seed, 0) !=3D 0) { - fprintf(stderr, "Invalid seed number: %s\n", seed_optarg); - exit(EXIT_FAILURE); + /* This will go away with the last user of rand(). */ + if (parse_uint_full(seed_optarg, &seed, 0) !=3D 0) { + fprintf(stderr, "Invalid seed number: %s\n", seed_optarg); + exit(EXIT_FAILURE); + } + srand(seed); + + qemu_guest_random_seed_main(seed_optarg, &err); + } else { + qcrypto_random_init(&err); + } + if (err) { + error_reportf_err(err, "cannot initialize crypto: "); + exit(1); } - srand(seed); - - qemu_guest_random_seed_main(seed_optarg, &error_fatal); } =20 target_environ =3D envlist_to_environ(envlist, NULL); --=20 2.17.1 From nobody Sat Apr 20 08:48:15 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1557862154; cv=none; d=zoho.com; s=zohoarc; b=POx6DsqlIi58/aBSFjNUeRjPhYwird6enSGvoXAWH9+y7x75fT4I/xe75MbcpNE7NIAwmMEq2jTdkROBAjt6xu3qyt2w1jG4oYx9Q/dekJt9S+klnKfQZkCXlYZko6HbDiA1eTfrbPp1jW81OfxYNQjl/nuFgloUEcG6B0rFbps= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557862154; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=LA1zmsYxmzBAEiSSaTbYsFeqnklh9uk6Ygv0EHqOLtQ=; b=aXkzFWHtrM0FkhtFbKY2WvNdLNiB5qRFut8cAyMOKibTwZW+OnLhVnasKZj4E9pjiANz8r0E16brt7c8vKt+N9E/DPL/bwFVEZl8VNHuFDjWeMDs9lJrexlScwwSwkT7VFQg5EoMG9zqkwsA2Gmn1Hi+rHnvmG8SvI1HfmWisUs= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557862154313745.5671206153671; Tue, 14 May 2019 12:29:14 -0700 (PDT) Received: from localhost ([127.0.0.1]:53068 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQd6n-000475-8c for importer@patchew.org; Tue, 14 May 2019 15:29:05 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48878) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcvL-0002Yo-1y for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQcvJ-0006vB-UF for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:15 -0400 Received: from mail-pf1-x443.google.com ([2607:f8b0:4864:20::443]:40108) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQcvJ-0006ua-Ol for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:13 -0400 Received: by mail-pf1-x443.google.com with SMTP id u17so444pfn.7 for ; Tue, 14 May 2019 12:17:13 -0700 (PDT) Received: from localhost.localdomain (97-113-13-231.tukw.qwest.net. [97.113.13.231]) by smtp.gmail.com with ESMTPSA id o6sm18682982pfa.88.2019.05.14.12.17.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 May 2019 12:17:11 -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=LA1zmsYxmzBAEiSSaTbYsFeqnklh9uk6Ygv0EHqOLtQ=; b=qXAl+exEkgjEqmClYfwO7vrFkayBfeQkBVu+IovbupV24zdHx8PFEg1hT2Eq5cGx2M sUcF4i1VsdHpd2MzpdaspluHu7CUuetHJXEiMafVf+Vr0qMcBT6aogQNhLqgpHSnKZab VG0F3d08mvQD+GhvQDyZ6rlMt9KQLCYrc+eDTGecT5badY3bA7ys0ksH+dxn/BOdTt0f nbb9yWAfSTIzcWJCwZC5o6MTkt4dbYCj2C/iFZqXp9JJugPvq9bgeeYoJxTKokDscs9O Q7YoSEn7UXpbVpaTpT9DY0WcUXrdUTAddAtNQkVRaVtcoVT3UWngoWeNb4FR+JCR//i3 QpcQ== 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=LA1zmsYxmzBAEiSSaTbYsFeqnklh9uk6Ygv0EHqOLtQ=; b=fw3UgFgw7W41UIa+c31Ms73RmZJN9j36pKcao10SgI2az9jxJhSA72XD847aM3ba6R ZT7a2MlrEzpuk9s7MTfBXZmLTPGMCwao2Rg8aOY/AO0XNzMmofhc4J96CglIY2H/G/wg qkNsp746aK7iYdqcE2cGUB6yGLyyqhjPg7pwOAdkY7r8yVovytv5y0QrrxaROKEd+q8K kuTSA2uVrPiiifSomVt6wUORGDWRHUpN3PAY4FlyCfKokeD2OqEoOFzp7g4LmbwSMntJ mcKWIsLsnQkeXSvBaNFhfWD8o/bR9qETGv4vfcOSEQ2xeQ9QHomQzF0aHdts4aopajSS KenQ== X-Gm-Message-State: APjAAAUCx4hqNBfKYO+Ge+zJeBo5JABHJVhyKQ+uAc1rghQwS1BQPdo+ VyCleKXCn5CwP6F2f8BBotEiyhKH3uo= X-Google-Smtp-Source: APXvYqzurqDusysKDy2Ao0TcQgYL6U2dBD9hdM6n4KHp7mqiJRzt9/egpB4vAnSeqFtmDHe+vv/j/g== X-Received: by 2002:a62:3605:: with SMTP id d5mr21638851pfa.28.1557861432600; Tue, 14 May 2019 12:17:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 14 May 2019 12:16:42 -0700 Message-Id: <20190514191653.31488-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190514191653.31488-1-richard.henderson@linaro.org> References: <20190514191653.31488-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::443 Subject: [Qemu-devel] [PATCH v7 13/24] linux-user: Use qemu_guest_getrandom_nofail for AT_RANDOM 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: , Cc: lvivier@redhat.com, berrange@redhat.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Use a better interface for random numbers than rand * 16. Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- linux-user/elfload.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/linux-user/elfload.c b/linux-user/elfload.c index ef42e02d82..1e06b908b7 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -7,6 +7,7 @@ #include "qemu.h" #include "disas/disas.h" #include "qemu/path.h" +#include "qemu/guest-random.h" =20 #ifdef _ARCH_PPC64 #undef ARCH_DLINFO @@ -1883,12 +1884,9 @@ static abi_ulong create_elf_tables(abi_ulong p, int = argc, int envc, } =20 /* - * Generate 16 random bytes for userspace PRNG seeding (not - * cryptically secure but it's not the aim of QEMU). + * Generate 16 random bytes for userspace PRNG seeding. */ - for (i =3D 0; i < 16; i++) { - k_rand_bytes[i] =3D rand(); - } + qemu_guest_getrandom_nofail(k_rand_bytes, sizeof(k_rand_bytes)); if (STACK_GROWS_DOWN) { sp -=3D 16; u_rand_bytes =3D sp; --=20 2.17.1 From nobody Sat Apr 20 08:48:15 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1557862242; cv=none; d=zoho.com; s=zohoarc; b=d5IFSVb7Ew9iXdCEioZBYU4L/8RHlOPB66ZaPa0WEnnh+8MqGkiDBtF1K5s34MoeznGAEf9BpJyI6vbCHP4lb0xdpzIa59ZNWVqphsYlYDIOrrO0L87QW8lH9YH8gH6wpP9kLByveqqZr94Say8+6elZJq++scZJQU60lBTLvVI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557862242; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=yE70JIuqrA6MJdI0/JWiVeD/16stq6LybzVtzKfjj1Q=; b=j2O4pzquRf3WPiGvFfXrSlWQ/XlBy7Bgm1TR3dQl6dT4zcAQqsoBuwE4Xf+oVR0Or/qGm6W4SFWJkJpISLP+ZmTlOF/Od3IVskR3AyR/BiXf9pqSD+OemsY2Uck2R2wtkk66SGGlE2TePT7YCvEaZZs0G4bdX7NSvVgIUc14okA= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557862242481966.3972937357657; Tue, 14 May 2019 12:30:42 -0700 (PDT) Received: from localhost ([127.0.0.1]:53110 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQd8J-0005Wm-Dk for importer@patchew.org; Tue, 14 May 2019 15:30:39 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48892) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcvM-0002aW-MR for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQcvL-0006wn-Iu for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:16 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]:46460) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQcvL-0006w7-Cn for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:15 -0400 Received: by mail-pf1-x430.google.com with SMTP id y11so9608580pfm.13 for ; Tue, 14 May 2019 12:17:15 -0700 (PDT) Received: from localhost.localdomain (97-113-13-231.tukw.qwest.net. [97.113.13.231]) by smtp.gmail.com with ESMTPSA id o6sm18682982pfa.88.2019.05.14.12.17.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 May 2019 12:17:13 -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=yE70JIuqrA6MJdI0/JWiVeD/16stq6LybzVtzKfjj1Q=; b=HAhj2AFcpUh4CzjBMsth/rz20YO6pgjhOkyg67ZMHAaUsCX/VlgNg8rJIOiRbwCdly DS5OZDF1vbWEvJQqapt4FwWTSXWok0p8b7K0qua9AryIAx932itK4y+oDQLspLb/5TVt stVUUWSKNufesu5j7h0fqTw4s7X/nguPDL3O9YqtVgGaqWi1ahmhO7lZyDPuqvi8cds9 38uqdrQJX1zgdlndtVHrlEegF5I0G0x3WHTt6MNXfWpLx1Yua55uXkvW+s7Pfe5hA0wE eM3V4rxguAL7vs9gdazmuPBu4qDqMNitb9NBT//PfpcJS4ygKC8pceHg2IJotdzSFVis PndQ== 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=yE70JIuqrA6MJdI0/JWiVeD/16stq6LybzVtzKfjj1Q=; b=CcFCfZkMhfopte756FvuEdTWcMfjW/V9IdKYx6UKc/FbAggqVEic3Keo9xu6AwvvOs oB739TxJ8hxxnOd/l7ogMPfObDaM6HOtWOjLdT1UYEFTCYNI/czrShrXAHyBy0/oDqN0 CR/10nit9vxQ8ekWIKO9xJA4ULNwfjdT24XE6KoSXlL1JoTdIU2xlAxrVJyMKjUbE7/d G8OpAozREARB9F05MbnXZ66fZslP4RVGHB1Jq9/OVDiMGMzcxSbyRxjdTAfXi4n3ImnX 55fD5/Hafrgq+RQxw6a6R31OScJq2Ish9IQf6CcZS0lS6k/HbBfJDYqj4zYoRi4J+3zb 1dug== X-Gm-Message-State: APjAAAVh9x4GFmfrTxvoQYc32ZLo1oVN0WCChFk7WHN+RoYsTFKPFUW+ DZUarAn5PF9BlnMqyZ+OuT+8ChAW7lc= X-Google-Smtp-Source: APXvYqwk8UpnqUrPNgrLCQCCsyOu7EILakafS+hwxLaHAalcGoPKlHA8aCDokpU2xpVcD8yu5lOxYQ== X-Received: by 2002:a63:6b06:: with SMTP id g6mr28570506pgc.346.1557861434077; Tue, 14 May 2019 12:17:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 14 May 2019 12:16:43 -0700 Message-Id: <20190514191653.31488-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190514191653.31488-1-richard.henderson@linaro.org> References: <20190514191653.31488-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::430 Subject: [Qemu-devel] [PATCH v7 14/24] linux-user/aarch64: Use qemu_guest_getrandom for PAUTH keys 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: , Cc: lvivier@redhat.com, berrange@redhat.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Use a better interface for random numbers than rand() * 3. Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- linux-user/aarch64/target_syscall.h | 2 -- linux-user/aarch64/cpu_loop.c | 29 ++++++--------------------- linux-user/syscall.c | 31 ++++++++++++++++++++++++----- 3 files changed, 32 insertions(+), 30 deletions(-) diff --git a/linux-user/aarch64/target_syscall.h b/linux-user/aarch64/targe= t_syscall.h index b595e5da82..995e475c73 100644 --- a/linux-user/aarch64/target_syscall.h +++ b/linux-user/aarch64/target_syscall.h @@ -29,6 +29,4 @@ struct target_pt_regs { # define TARGET_PR_PAC_APDBKEY (1 << 3) # define TARGET_PR_PAC_APGAKEY (1 << 4) =20 -void arm_init_pauth_key(ARMPACKey *key); - #endif /* AARCH64_TARGET_SYSCALL_H */ diff --git a/linux-user/aarch64/cpu_loop.c b/linux-user/aarch64/cpu_loop.c index d75fd9d3e2..cedad39ca0 100644 --- a/linux-user/aarch64/cpu_loop.c +++ b/linux-user/aarch64/cpu_loop.c @@ -20,6 +20,7 @@ #include "qemu/osdep.h" #include "qemu.h" #include "cpu_loop-common.h" +#include "qemu/guest-random.h" =20 #define get_user_code_u32(x, gaddr, env) \ ({ abi_long __r =3D get_user_u32((x), (gaddr)); \ @@ -147,24 +148,6 @@ void cpu_loop(CPUARMState *env) } } =20 -static uint64_t arm_rand64(void) -{ - int shift =3D 64 - clz64(RAND_MAX); - int i, n =3D 64 / shift + (64 % shift !=3D 0); - uint64_t ret =3D 0; - - for (i =3D 0; i < n; i++) { - ret =3D (ret << shift) | rand(); - } - return ret; -} - -void arm_init_pauth_key(ARMPACKey *key) -{ - key->lo =3D arm_rand64(); - key->hi =3D arm_rand64(); -} - void target_cpu_copy_regs(CPUArchState *env, struct target_pt_regs *regs) { ARMCPU *cpu =3D arm_env_get_cpu(env); @@ -192,11 +175,11 @@ void target_cpu_copy_regs(CPUArchState *env, struct t= arget_pt_regs *regs) #endif =20 if (cpu_isar_feature(aa64_pauth, cpu)) { - arm_init_pauth_key(&env->apia_key); - arm_init_pauth_key(&env->apib_key); - arm_init_pauth_key(&env->apda_key); - arm_init_pauth_key(&env->apdb_key); - arm_init_pauth_key(&env->apga_key); + qemu_guest_getrandom_nofail(&env->apia_key, sizeof(ARMPACKey)); + qemu_guest_getrandom_nofail(&env->apib_key, sizeof(ARMPACKey)); + qemu_guest_getrandom_nofail(&env->apda_key, sizeof(ARMPACKey)); + qemu_guest_getrandom_nofail(&env->apdb_key, sizeof(ARMPACKey)); + qemu_guest_getrandom_nofail(&env->apga_key, sizeof(ARMPACKey)); } =20 ts->stack_base =3D info->start_stack; diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 96f20886ce..8c17b14d51 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -108,6 +108,7 @@ =20 #include "qemu.h" #include "qemu/guest-random.h" +#include "qapi/error.h" #include "fd-trans.h" =20 #ifndef CLONE_IO @@ -9765,25 +9766,45 @@ static abi_long do_syscall1(void *cpu_env, int num,= abi_long arg1, int all =3D (TARGET_PR_PAC_APIAKEY | TARGET_PR_PAC_API= BKEY | TARGET_PR_PAC_APDAKEY | TARGET_PR_PAC_APDBK= EY | TARGET_PR_PAC_APGAKEY); + int ret =3D 0; + Error *err =3D NULL; + if (arg2 =3D=3D 0) { arg2 =3D all; } else if (arg2 & ~all) { return -TARGET_EINVAL; } if (arg2 & TARGET_PR_PAC_APIAKEY) { - arm_init_pauth_key(&env->apia_key); + ret |=3D qemu_guest_getrandom(&env->apia_key, + sizeof(ARMPACKey), &er= r); } if (arg2 & TARGET_PR_PAC_APIBKEY) { - arm_init_pauth_key(&env->apib_key); + ret |=3D qemu_guest_getrandom(&env->apib_key, + sizeof(ARMPACKey), &er= r); } if (arg2 & TARGET_PR_PAC_APDAKEY) { - arm_init_pauth_key(&env->apda_key); + ret |=3D qemu_guest_getrandom(&env->apda_key, + sizeof(ARMPACKey), &er= r); } if (arg2 & TARGET_PR_PAC_APDBKEY) { - arm_init_pauth_key(&env->apdb_key); + ret |=3D qemu_guest_getrandom(&env->apdb_key, + sizeof(ARMPACKey), &er= r); } if (arg2 & TARGET_PR_PAC_APGAKEY) { - arm_init_pauth_key(&env->apga_key); + ret |=3D qemu_guest_getrandom(&env->apga_key, + sizeof(ARMPACKey), &er= r); + } + if (ret !=3D 0) { + /* + * Some unknown failure in the crypto. The best + * we can do is log it and fail the syscall. + * The real syscall cannot fail this way. + */ + qemu_log_mask(LOG_UNIMP, + "PR_PAC_RESET_KEYS: Crypto failure: = %s", + error_get_pretty(err)); + error_free(err); + return -TARGET_EIO; } return 0; } --=20 2.17.1 From nobody Sat Apr 20 08:48:15 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1557862307; cv=none; d=zoho.com; s=zohoarc; b=bOX2T3YEdxMGQcgFJzS2aVKkSmuTC6Ky+8VfUCYQij/uy4LOIhEkwh0H9MwDsITY3/PLzn9x8GtZg8ww0cDKz1yVRbX/WrvZuwpld4NBonuro635+l5s5wdGETwheZBvQIxxEk+5qPqMLhRBg2V3CoJ3x2fy1s+sVRpjhqgUfgM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557862307; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=snXBlb0VD87nnHn7Q6KPOfq6Oyu7S4mMYTFxn8359jU=; b=a4ThUQvyZileU6SHco9e5EJhID39TJdQ0FRlTiUcRyqw9mHeyrwx2OQZTgP4C2ICfIwIIq4sTdRylJ+F1OHSjmuMtana7oDaXIaOMYOHD6/ncEXh0ZWnHPmv5umQ3Lu8AMBJ2fd2xrs3c9sKIm3l3zllQTPVvQyGFccuFqveTng= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557862307654593.0513569311659; Tue, 14 May 2019 12:31:47 -0700 (PDT) Received: from localhost ([127.0.0.1]:53126 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQd9L-0006T6-M4 for importer@patchew.org; Tue, 14 May 2019 15:31:43 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48907) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcvO-0002bJ-3q for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQcvN-0006yT-4p for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:18 -0400 Received: from mail-pg1-x52b.google.com ([2607:f8b0:4864:20::52b]:44123) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQcvM-0006xT-Sv for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:17 -0400 Received: by mail-pg1-x52b.google.com with SMTP id z16so34193pgv.11 for ; Tue, 14 May 2019 12:17:16 -0700 (PDT) Received: from localhost.localdomain (97-113-13-231.tukw.qwest.net. [97.113.13.231]) by smtp.gmail.com with ESMTPSA id o6sm18682982pfa.88.2019.05.14.12.17.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 May 2019 12:17:14 -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=snXBlb0VD87nnHn7Q6KPOfq6Oyu7S4mMYTFxn8359jU=; b=cS6X8k+9x3u+9JC1Vv7LBt4ObMwsyt+ocIB02CPrAa8lIfW1gFx31NoNe073nSOMkk lDKTF0GO9O40go6+yOrPeq6IF4owyojh8z30sH3PL7OkbR6mt4A1jJjbFOZ3o/0AfGZu fhSo2B/6SzEHTpzp8vGlgJyxhwYBq0uSDVhAhzj8xQekDxnoABXILS7NPXE2Chs0vLLh j4ZnmGvM7cvxZG3rAd0/yg9sjB4bn5Ao+NSODB5bCf/6VVvuA4pxytazfbZJg+k8CLua VXFMN16gHDSLWcISHyFY/Qvjlfq+vKS8AN0EwJ13KteoQlsVZM8bc2u9dxY36hoc0uVA 4gCg== 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=snXBlb0VD87nnHn7Q6KPOfq6Oyu7S4mMYTFxn8359jU=; b=U/mfU7pqCgeWpsqWybxnyMyIyDUXLn5SxLR+KGy/hzHzdej44HSGHCnpIoH61akRBX PWseKd+On9AbuwFCjRYnNFf4n3BOmgjIccs4DdEKUswQ5JPPyTGk0ItCnlX74nV8cyT2 MftUrlVR03RbRLXuuLoz7z/RcvBc7mGhBWggRFrFTIoLo4QBvTjzk9BTsqhd6CNIjs7N FYSXR31BJnmCayjuc0khDqh0bTE3Tmcao7QGemT6riS15xXR4eJGhUrwYARG03+lE3WV evZfVR1vgxWR6DN/G+VzxK0q/j7MGBaD//e52zWAHB5XufpfvBTkhyied26axMurPz8s 80KQ== X-Gm-Message-State: APjAAAVHb5iSCejfIl2PZ/t40OEHz4teqEZWR5b8tpIojL+L6Rat+Bxy n9jfS1gN+w3SJGJoDBWTAOtVugXNERg= X-Google-Smtp-Source: APXvYqynfhoJ1mqsqinp8WK7UkdVMbBPwe8WbR0t0vTY1OvRVHR/Veg0Pa3c6uMvlLAZen23GGTR4A== X-Received: by 2002:a63:3ece:: with SMTP id l197mr1249541pga.268.1557861435565; Tue, 14 May 2019 12:17:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 14 May 2019 12:16:44 -0700 Message-Id: <20190514191653.31488-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190514191653.31488-1-richard.henderson@linaro.org> References: <20190514191653.31488-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::52b Subject: [Qemu-devel] [PATCH v7 15/24] linux-user: Remove srand call 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: , Cc: lvivier@redhat.com, berrange@redhat.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) We no longer use rand() within linux-user. Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- linux-user/main.c | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/linux-user/main.c b/linux-user/main.c index 4c72f07555..5792c40ace 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -623,8 +623,6 @@ int main(int argc, char **argv, char **envp) =20 cpu_model =3D NULL; =20 - srand(time(NULL)); - qemu_add_opts(&qemu_trace_opts); =20 optind =3D parse_args(argc, argv); @@ -692,15 +690,6 @@ int main(int argc, char **argv, char **envp) { Error *err =3D NULL; if (seed_optarg !=3D NULL) { - unsigned long long seed; - - /* This will go away with the last user of rand(). */ - if (parse_uint_full(seed_optarg, &seed, 0) !=3D 0) { - fprintf(stderr, "Invalid seed number: %s\n", seed_optarg); - exit(EXIT_FAILURE); - } - srand(seed); - qemu_guest_random_seed_main(seed_optarg, &err); } else { qcrypto_random_init(&err); --=20 2.17.1 From nobody Sat Apr 20 08:48:15 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1557862404; cv=none; d=zoho.com; s=zohoarc; b=Q8S9PIPaJiy7aJlhXsVBczHDY3SGn9WUfqMo8Bi8a0NagpSO6Vv3Rx4960OfvG+cC9lkyzeGG3p/wCR9x6CFeDdiFmGcewCwgW2rlm0qIAvYfowtUYc1DFt8PCA4s7zi1AQ+TU/tX/WeNJHfSQnGVfidVmrxicWtub385cLwYfY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557862404; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=gZNiNYQQXuA93bC9AkQ3RkBuv003My9kgUQccuqjr10=; b=hM6O93BkXSggAqiWNb28jLCGRqK9br5A4BmSKsvjD8Ty8VIo4VLQ4sXYt7OpGdU4iWaBRRcTCTZR3GkjRQZIiAGXD249u4+zCdz0hrBmb4cyGKfQ877UZjm3Sqo043NkxzTOmAhvAU+dKGOQqGY8hn4/TGBluXBgdZtCMqwRCCo= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557862404110720.5102342431111; Tue, 14 May 2019 12:33:24 -0700 (PDT) Received: from localhost ([127.0.0.1]:53140 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQdAv-0007id-4F for importer@patchew.org; Tue, 14 May 2019 15:33:21 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48927) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcvR-0002d6-Hn for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQcvO-00070o-IO for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:20 -0400 Received: from mail-pf1-x443.google.com ([2607:f8b0:4864:20::443]:33544) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQcvO-0006zM-9X for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:18 -0400 Received: by mail-pf1-x443.google.com with SMTP id z28so18290pfk.0 for ; Tue, 14 May 2019 12:17:18 -0700 (PDT) Received: from localhost.localdomain (97-113-13-231.tukw.qwest.net. [97.113.13.231]) by smtp.gmail.com with ESMTPSA id o6sm18682982pfa.88.2019.05.14.12.17.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 May 2019 12:17:16 -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=gZNiNYQQXuA93bC9AkQ3RkBuv003My9kgUQccuqjr10=; b=wdyp/cs6Zycjdm7r/zoV+/gINfmq+a87JqC8wqYy9g4QWWQ2Ih3wvoSqi38BS4y10N dBE7kInnbygibVpGV8xlAgCow7QXo4s9KsjQa3+SDIN9jIrpJxW1L/NLb/K7OVhsXYcd yicu/NxBEdishimKpwxf1daCezCJ/0zeg4j+TWzwDbHgyEj2IHma/RuSqUOWco3Nyw6N QOvdRFNIp2TJB7Bh4CXiZbtN2LOWTyyoAJsDNkpJ/BVF8sFmFCNVn1+apMaCuwJqhDEc 9YIsOXH91TlsOQnIxu+X2jyQXCo3V7IXSNj1x0ro83Cgv1GhS2LDFXqvSeFYXlCS9tFp 9ZRg== 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=gZNiNYQQXuA93bC9AkQ3RkBuv003My9kgUQccuqjr10=; b=R6uqOhYsU/VAhwmiPX2vnkKooMdQN5PuAAlOKYeT7lVIWpag+hHmOFiJWawppB+Tc9 25+srYrRrqRLp/SZbs2Ac/lBtDEpX0sZQXlWmVs9d/GztcKxCR1m5baXLAwl1ZcTAE7p 22/ev/9VEJXCoa926fDbrsyagYucrk3W3y2L/jFU5sHY0YkEoBlijFY7+0pDtDM33Zks nSsLaE+2+fWUHUMJee8am0ki2UPCDqAoYNzdLJO63VK5oVC+RyVhSvZGwbwoqKIXDH1E 67XO4irGJtPqcg3sHwnvO9PQach67E5BjFPfh+JgxszzNs0cb/kkna2ujXu6vPidEPsl F78Q== X-Gm-Message-State: APjAAAVXd6wgWqa6EFOPuRkUVRIOo9XqH9ePrDv3Iug98OOSm8GPyVcD dMntiEeqbpmA1KmkApmBcr8AYFKKJGA= X-Google-Smtp-Source: APXvYqxNq4t4fK30j+Qt3BVQi/JRh4jPCw0hThTfUJe+5F81dbAHCtxzCbw3JEu70uEPMSJkUe5FOg== X-Received: by 2002:a63:b901:: with SMTP id z1mr29239919pge.102.1557861436949; Tue, 14 May 2019 12:17:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 14 May 2019 12:16:45 -0700 Message-Id: <20190514191653.31488-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190514191653.31488-1-richard.henderson@linaro.org> References: <20190514191653.31488-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::443 Subject: [Qemu-devel] [PATCH v7 16/24] aspeed/scu: Use qemu_guest_getrandom_nofail 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: , Cc: lvivier@redhat.com, berrange@redhat.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) The random number is intended for use by the guest. As such, we should honor the -seed argument for reproducibility. Use the *_nofail routine instead of rolling our own error handling locally. Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: C=C3=A9dric Le Goater Reviewed-by: Joel Stanley Signed-off-by: Richard Henderson --- hw/misc/aspeed_scu.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/hw/misc/aspeed_scu.c b/hw/misc/aspeed_scu.c index c8217740ef..ab1e18ed4b 100644 --- a/hw/misc/aspeed_scu.c +++ b/hw/misc/aspeed_scu.c @@ -16,7 +16,7 @@ #include "qapi/visitor.h" #include "qemu/bitops.h" #include "qemu/log.h" -#include "crypto/random.h" +#include "qemu/guest-random.h" #include "trace.h" =20 #define TO_REG(offset) ((offset) >> 2) @@ -157,14 +157,8 @@ static const uint32_t ast2500_a1_resets[ASPEED_SCU_NR_= REGS] =3D { =20 static uint32_t aspeed_scu_get_random(void) { - Error *err =3D NULL; uint32_t num; - - if (qcrypto_random_bytes((uint8_t *)&num, sizeof(num), &err)) { - error_report_err(err); - exit(1); - } - + qemu_guest_getrandom_nofail(&num, sizeof(num)); return num; } =20 --=20 2.17.1 From nobody Sat Apr 20 08:48:15 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1557862277; cv=none; d=zoho.com; s=zohoarc; b=aSYMtxWk00ZkEfOrKh+ipXpsjQu0/ieoNCdifOpiIkGRKMxzsoObLWE2MspaCP6W3QV/w1a+l63unmWtA4rJ1yQz3LemH7zIw3CzpaOWW4DHJww80kijWEZgXjX1HViYNG5K/5COublfW11tDJtIgMdMDEuBA/CRptFpaACoDuc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557862277; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=zHL5/dOLNq3cxnvhnBPOBazkJM0pmZq+fc+P6w38V4s=; b=nX6l2jwffX87GS2daBInwrb/GnCFHdzYYL/o7+gOWnXjU3f+K9sMw57z40GDvEJl8RvYidVnKBYAH9nFzKBABmqDgFLnEmYqh4S3pqzs7q35Hc0EsUTQLk+zV3CQWSC9tOFY2OkIkL/wOFw71UD0QlwybR2CmjMu3UwUpgQgMW4= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557862277839263.4579513474199; Tue, 14 May 2019 12:31:17 -0700 (PDT) Received: from localhost ([127.0.0.1]:53124 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQd8s-0005y6-Py for importer@patchew.org; Tue, 14 May 2019 15:31:14 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48929) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcvR-0002d7-I8 for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQcvP-00072z-Mp for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:21 -0400 Received: from mail-pf1-x442.google.com ([2607:f8b0:4864:20::442]:40109) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQcvP-00071g-As for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:19 -0400 Received: by mail-pf1-x442.google.com with SMTP id u17so592pfn.7 for ; Tue, 14 May 2019 12:17:19 -0700 (PDT) Received: from localhost.localdomain (97-113-13-231.tukw.qwest.net. [97.113.13.231]) by smtp.gmail.com with ESMTPSA id o6sm18682982pfa.88.2019.05.14.12.17.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 May 2019 12:17:17 -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; bh=zHL5/dOLNq3cxnvhnBPOBazkJM0pmZq+fc+P6w38V4s=; b=M6gR4U3L/bgTDtPmpFWXLWvD77Vm4fCPpE7DYCo4iDjA4pftInBaJ9WEh2MI/25bku ERxLzyDm4lvi0GcKiUPCXMLQnc+msFjEVCLWSy5RW5QFa7f8SmPHpzEUeBHBp96Ls3tw gUr43liDbX5lUAucADct9Mv8bF/+cpbzcrFyfVbRkwo1AtWMbwjdeARv0kXoZCPErki5 /oINr0aj5sBZumLjuLXKv87Fc8gD+C5ouLDi11xpglqafsqkL11OvjaiQFU4EYYbSy5X uSHJWUrk7SVDgs23zT153m9/kEZKys0Hot+jZ2EoK3BqYtliP4dq8Wy3XadpqiZD7M8n MEvw== 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; bh=zHL5/dOLNq3cxnvhnBPOBazkJM0pmZq+fc+P6w38V4s=; b=kZnUhRbssnc2IfNq2pqtYy/fMePsYFoinetWZwMcU72xmRIBUvcwLjYn1SK05xpFGv UPjxTrWzeWqHk+Gc5hjR11JcckEa5dxEcMKc2WEglIU/rravrLkWS5d5+D9Rt1twwmLe Y1mxWynUCLClno3E5aggmZmiwEEwMTGwFhstiRmtqEI5nADJ9l8pAgqh8SmpzCYkgZir 0yPkjVbtJRsFfT97iCLLulh79k4JtqsOQxgcXRramzQupL17KYLIY1kxVPD4I0kesPI3 pXFpAJzPMRHj+4UCeXeunHpvIfmQMxcDLvcCuHKOoVKM8AcGBy/NuPO19r9GZXbVNzqm Bx3A== X-Gm-Message-State: APjAAAVxqQWBjj/Y7wY7FaiK94GXq0FC+HCacD7kCua+4XFgt7FLjzvW oUL+ZNQ6wB6GP5ixUHmfz5Ukznd8xRU= X-Google-Smtp-Source: APXvYqwPJl9FUKTVDHaiuh2HddhERSKxElrRnOOv1igHwwLaqO/EvFodF9nYvK5K5AyN9d26HtyjXg== X-Received: by 2002:a63:541d:: with SMTP id i29mr39416547pgb.174.1557861438129; Tue, 14 May 2019 12:17:18 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 14 May 2019 12:16:46 -0700 Message-Id: <20190514191653.31488-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190514191653.31488-1-richard.henderson@linaro.org> References: <20190514191653.31488-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::442 Subject: [Qemu-devel] [PATCH v7 17/24] hw/misc/nrf51_rng: Use qemu_guest_getrandom_nofail 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: , Cc: lvivier@redhat.com, berrange@redhat.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The random number is intended for use by the guest. As such, we should honor the -seed argument for reproducibility. Use the *_nofail routine instead of error_abort directly. Reviewed-by: Laurent Vivier Reviewed-by: Joel Stanley Signed-off-by: Richard Henderson --- hw/misc/nrf51_rng.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/misc/nrf51_rng.c b/hw/misc/nrf51_rng.c index d188f044f4..3400e90a9b 100644 --- a/hw/misc/nrf51_rng.c +++ b/hw/misc/nrf51_rng.c @@ -14,7 +14,7 @@ #include "qapi/error.h" #include "hw/arm/nrf51.h" #include "hw/misc/nrf51_rng.h" -#include "crypto/random.h" +#include "qemu/guest-random.h" =20 static void update_irq(NRF51RNGState *s) { @@ -145,7 +145,7 @@ static void nrf51_rng_timer_expire(void *opaque) { NRF51RNGState *s =3D NRF51_RNG(opaque); =20 - qcrypto_random_bytes(&s->value, 1, &error_abort); + qemu_guest_getrandom_nofail(&s->value, 1); =20 s->event_valrdy =3D 1; qemu_set_irq(s->eep_valrdy, 1); --=20 2.17.1 From nobody Sat Apr 20 08:48:15 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1557862489; cv=none; d=zoho.com; s=zohoarc; b=myjV9gwnjdKh1elxRIZMvIRl5m4lRG1zKTtDjD3fLJ2JaWdyFVlTavPoxmAAq/420/P27OYrlg5anUPwWsGsxrpZ3SmBvh4EqHQG3+vhmIMuFNggJg5yDcBvJZXxCiuTkSk4x+g4l40zRfYEcAfixXJS15ULjPo1LeLEmJfmWns= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557862489; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=wKy5ep5gzBeVJvdgqxMAwC/EHW/NEI1i+sUaPM2vsGg=; b=hyO5mlg/6M1k1z8VYEOnqH5Gaawn6p3g2U/bGD9p2xXpTFFWRzrOzw2Jvy432I/V7Qb6/iAb9YLl5SDUZN59l8F2Z2TXEUsmLUrLroCOlr0uULwxslkj7YU6txKW9HrPAEM7ankHdXeacFpFZRzyfKf+BNBrSIwlYsupnl6tHdc= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557862489717660.0406539686494; Tue, 14 May 2019 12:34:49 -0700 (PDT) Received: from localhost ([127.0.0.1]:53144 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQdBv-0008Pf-Vz for importer@patchew.org; Tue, 14 May 2019 15:34:24 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48960) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcvV-0002hM-Bs for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQcvT-00076f-3A for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:25 -0400 Received: from mail-pg1-x541.google.com ([2607:f8b0:4864:20::541]:44350) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQcvR-00073d-IH for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:21 -0400 Received: by mail-pg1-x541.google.com with SMTP id z16so34264pgv.11 for ; Tue, 14 May 2019 12:17:20 -0700 (PDT) Received: from localhost.localdomain (97-113-13-231.tukw.qwest.net. [97.113.13.231]) by smtp.gmail.com with ESMTPSA id o6sm18682982pfa.88.2019.05.14.12.17.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 May 2019 12:17:18 -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=wKy5ep5gzBeVJvdgqxMAwC/EHW/NEI1i+sUaPM2vsGg=; b=HUMjL7YbNsLvockZ2JWS36HhF7Fu+KVAC98o3BcIpBR1mnssHseBVExELZPJO3y24P iskIXmWNnsyrl+hwNmr4KCejZOOjzsP/Bf7Qv+5S9v9qi6/qm4/aTfquomhrUckKf6TB 2rk/3ex0QtBwMEhVD4/V4xfT8i9e42C7Aq9vC7ECEnTvgYOLntqzayUSyuzn0h2cys/4 EsmGJvTBQL68MEA7vMzt05MiZQXMciYXywLfPT7UO+A4hQdFa/ccCcVw5xI33uvg93x6 r0liswMq8iDa0jInLwEnBl4LjuQPX8bXg6vJUWNdrCxXYxyavQAXrvKwb4m6D+zG4NIu pBCA== 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=wKy5ep5gzBeVJvdgqxMAwC/EHW/NEI1i+sUaPM2vsGg=; b=jLJZBC7JEQ/oR/gH65Oky6faO/J4RGcXyy1112/eMMZDlStsv6ZPHNTLXn4J1OYFPX FQPS7iOPHAnbFIf8LH/zoaz4SQsoPqDQqdTQv97jOvYDMvAzJTL1YkYLBOJ28s5jg7W6 MoO4FT8fYkvOSwwY54aBrPAmNUX1B83AMLnnMmtFPuaUTP6I8WL21tOipPUOnATIVHxL x2z12Q77Ld0/PM6DubIlYiTfwehu+1yXE6QIewmZ4mJhS7Gvo8l0fiRZQ8aoYrFSY++Y v3JA8wy0fajc5E7VshoKFIP0HtBhBUHc8EKzkFdlNs7bnj/vPqOpx47al+oweg68HPTI zOFA== X-Gm-Message-State: APjAAAWGNIjkqi9vzc/dg/6Uh/SgeHeoU3ddP/ocNZ6e4dyCDnZY7FXl QH0MvKsMpkuQvugfrm0u2iLCQG9eFNA= X-Google-Smtp-Source: APXvYqyOgMnuN63CxFx71LWU6oKE7bVwvuFxqvEwpxfZXimI9r7lrhxk9aiLv0uM0e6e2OtSt2NG3A== X-Received: by 2002:aa7:8d81:: with SMTP id i1mr14308617pfr.244.1557861439629; Tue, 14 May 2019 12:17:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 14 May 2019 12:16:47 -0700 Message-Id: <20190514191653.31488-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190514191653.31488-1-richard.henderson@linaro.org> References: <20190514191653.31488-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::541 Subject: [Qemu-devel] [PATCH v7 18/24] hw/misc/bcm2835_rng: Use qemu_guest_getrandom_nofail 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: , Cc: lvivier@redhat.com, berrange@redhat.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) The random number is intended for use by the guest. As such, we should honor the -seed argument for reproducibility. Use the *_nofail routine instead of rolling our own error handling locally. Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- hw/misc/bcm2835_rng.c | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/hw/misc/bcm2835_rng.c b/hw/misc/bcm2835_rng.c index 4d62143b24..fe59c868f5 100644 --- a/hw/misc/bcm2835_rng.c +++ b/hw/misc/bcm2835_rng.c @@ -9,30 +9,26 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" -#include "qapi/error.h" -#include "crypto/random.h" +#include "qemu/guest-random.h" #include "hw/misc/bcm2835_rng.h" =20 static uint32_t get_random_bytes(void) { uint32_t res; - Error *err =3D NULL; =20 - if (qcrypto_random_bytes((uint8_t *)&res, sizeof(res), &err) < 0) { - /* On failure we don't want to return the guest a non-random - * value in case they're really using it for cryptographic - * purposes, so the best we can do is die here. - * This shouldn't happen unless something's broken. - * In theory we could implement this device's full FIFO - * and interrupt semantics and then just stop filling the - * FIFO. That's a lot of work, though, so we assume any - * errors are systematic problems and trust that if we didn't - * fail as the guest inited then we won't fail later on - * mid-run. - */ - error_report_err(err); - exit(1); - } + /* + * On failure we don't want to return the guest a non-random + * value in case they're really using it for cryptographic + * purposes, so the best we can do is die here. + * This shouldn't happen unless something's broken. + * In theory we could implement this device's full FIFO + * and interrupt semantics and then just stop filling the + * FIFO. That's a lot of work, though, so we assume any + * errors are systematic problems and trust that if we didn't + * fail as the guest inited then we won't fail later on + * mid-run. + */ + qemu_guest_getrandom_nofail(&res, sizeof(res)); return res; } =20 --=20 2.17.1 From nobody Sat Apr 20 08:48:15 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1557862635; cv=none; d=zoho.com; s=zohoarc; b=l0qZJkdrlPJVpfJxWMrRpI8ZGlghpgujEXouCGIeq43o824Lms6DUr+FCiMaDq6TkvDTR+tDcWJBsZ89puEdHoU/IzZABXC+dqjo43rOeS7drMJG4VozOvmb6/MoPCPJ4YVduOiPBwi1QxW/6CRkXBfyv2EEvIot5TUE5detByc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557862635; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=/VWGaUBQJcHRh8ZCol9Bt7n9p31zv9AWS8bL9WKxKYs=; b=Huc0T6nanMyeBI8P13wsoe243PNBnciQKenHnpa87JAMHGOSzzA+1Spd68R/nXDFHZKf+QdVI8hCmihOuIlyZoXE5dywm+hqGQA+U2u9J/GSBoXFYnA16Ooh+l1raROJXdRbDt4s+ZPQOm7SNsgTu8rzekMn5pPabFyGHb4tEMg= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557862635267931.7088939410053; Tue, 14 May 2019 12:37:15 -0700 (PDT) Received: from localhost ([127.0.0.1]:53206 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQdEZ-00024q-Ca for importer@patchew.org; Tue, 14 May 2019 15:37:07 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48958) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcvV-0002hK-BM for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQcvT-00077L-GS for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:25 -0400 Received: from mail-pl1-x643.google.com ([2607:f8b0:4864:20::643]:40051) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQcvT-00075U-2N for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:23 -0400 Received: by mail-pl1-x643.google.com with SMTP id g69so73586plb.7 for ; Tue, 14 May 2019 12:17:21 -0700 (PDT) Received: from localhost.localdomain (97-113-13-231.tukw.qwest.net. [97.113.13.231]) by smtp.gmail.com with ESMTPSA id o6sm18682982pfa.88.2019.05.14.12.17.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 May 2019 12:17:20 -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=/VWGaUBQJcHRh8ZCol9Bt7n9p31zv9AWS8bL9WKxKYs=; b=ry6QEhMeXE+0og9mw97zNWAEloNKkbE7ODLUz0iLgJwFzeY9WxkiukGjsbexWRwrto NGmnfgcOedsNVxI5363MkVUJOsLhTHN0dFpJg6tZGwL3Wv7QdZ/CY8/WRCvjTxwXhL/4 Qv8X8QngWVyFPouabU56oeHedFPDQaAEujSZAbcSGhMkXltt9tmjWU13N9g91OalpwvW FqmVFAxc9iphkhv9DsIrK74utN9okF3A8jbDU+son2vluXc2YQIdhIzr8m0OWOrwUGDO rb9fsGlXAcNjL+QYhiw2jgsu5+TWQUtbmWMdTridweG+dOaUaGl1PtRFbY0mX1gd8Zxz 0iiw== 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=/VWGaUBQJcHRh8ZCol9Bt7n9p31zv9AWS8bL9WKxKYs=; b=cnZhoB0qXn7vvQ3liI0xpoZL63bjdBOji35uBG1SE/VGkXnzSxfQPAmFqK1EyUHb4g zDSmDxVfvzXV08md5ZcaWEixla0wFiIzDNzlzbd9ZoGYn/i9CPf+MS3qFsx851l8iX6z eVSzL4ROv7hTdYPeYi+O4jzscPF/0U06KcY6zy+C7ZZ7MHtPMR2cho0UQn3Qy9FUbn35 r0D3B9+idi+vk5Gk4y0/CKhHgFXYDNG5UD1u4ePD6Ibr2DL9SMQutkw0U4t3kpOO0Np5 nGV0VFG8rhusDhJeg6o86ar3NLTa/JrCU/tQxkZ+Qq3TZtmOjHBPa3RTNekNsk41rNVD F2aA== X-Gm-Message-State: APjAAAVkezsSZIsHkBoO6yzzBG2JJXT7Wg3vjbhFeRjQfZpEfD5K8rhm WMqZWmLq/G2V+uI9Qkgb/B6Q3ly+xuQ= X-Google-Smtp-Source: APXvYqzi6HJzbjZwABtfVsly1pqYu3v7pxF734dxJYriPwpIbMurAs4mvUnvKEvOAH0rxjULyQ9ndA== X-Received: by 2002:a17:902:b606:: with SMTP id b6mr40343627pls.100.1557861440862; Tue, 14 May 2019 12:17:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 14 May 2019 12:16:48 -0700 Message-Id: <20190514191653.31488-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190514191653.31488-1-richard.henderson@linaro.org> References: <20190514191653.31488-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::643 Subject: [Qemu-devel] [PATCH v7 19/24] hw/misc/exynos4210_rng: Use qemu_guest_getrandom 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: , Cc: lvivier@redhat.com, berrange@redhat.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) The random number is intended for use by the guest. As such, we should honor the -seed argument for reproducibility. Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- hw/misc/exynos4210_rng.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/hw/misc/exynos4210_rng.c b/hw/misc/exynos4210_rng.c index 4ecbebd2d7..0e70ffb404 100644 --- a/hw/misc/exynos4210_rng.c +++ b/hw/misc/exynos4210_rng.c @@ -18,10 +18,10 @@ */ =20 #include "qemu/osdep.h" -#include "crypto/random.h" #include "hw/sysbus.h" #include "qapi/error.h" #include "qemu/log.h" +#include "qemu/guest-random.h" =20 #define DEBUG_EXYNOS_RNG 0 =20 @@ -109,7 +109,6 @@ static void exynos4210_rng_set_seed(Exynos4210RngState = *s, unsigned int i, static void exynos4210_rng_run_engine(Exynos4210RngState *s) { Error *err =3D NULL; - int ret; =20 /* Seed set? */ if ((s->reg_status & EXYNOS4210_RNG_STATUS_SEED_SETTING_DONE) =3D=3D 0= ) { @@ -127,13 +126,11 @@ static void exynos4210_rng_run_engine(Exynos4210RngSt= ate *s) } =20 /* Get randoms */ - ret =3D qcrypto_random_bytes((uint8_t *)s->randr_value, - sizeof(s->randr_value), &err); - if (!ret) { + if (qemu_guest_getrandom(s->randr_value, sizeof(s->randr_value), &err)= ) { + error_report_err(err); + } else { /* Notify that PRNG is ready */ s->reg_status |=3D EXYNOS4210_RNG_STATUS_PRNG_DONE; - } else { - error_report_err(err); } =20 out: --=20 2.17.1 From nobody Sat Apr 20 08:48:15 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1557862800; cv=none; d=zoho.com; s=zohoarc; b=CB7JPMObxF1/h1qk0cMRLn3nVBZXlRvd1SHwCzBGJBvHDyYfro/lYkWA1DlEjdmKSiiwjg/6wHHYAWUGkuxaZvpo8Qk7FLaEP5kllFjeH3BPNCUOX0wartrSxMszO7YpjPiiAHsdjdw0mmTvRzUGQKsc7WuAeIK5soQ2pLQwvUE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557862800; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=O5zIN7a5YhWG7ErE5cL09/UzOmkeLwtbGoogr/y9loY=; b=bOHBKnp7YiMwRv4WWfJx7MaC9enpzSBvMYMyV9Arno8XDc0lnY9jLPG9gstIdcd4unCR/YVhM9d7If2SYGvQwhTBiSbu5NobQkcV5LBS3W2gIr5Cy6UjGfAQU+QD7DcqtsfK3KMWzGnCT7/rkPesKZaKIyONn0+ih0x+2dVa0ew= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557862800704467.9358682297552; Tue, 14 May 2019 12:40:00 -0700 (PDT) Received: from localhost ([127.0.0.1]:53249 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQdH1-0004K3-7S for importer@patchew.org; Tue, 14 May 2019 15:39:39 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48981) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcvX-0002jG-B3 for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQcvV-00078u-Dx for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:27 -0400 Received: from mail-pl1-x642.google.com ([2607:f8b0:4864:20::642]:33830) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQcvT-00076S-FJ for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:25 -0400 Received: by mail-pl1-x642.google.com with SMTP id w7so87626plz.1 for ; Tue, 14 May 2019 12:17:23 -0700 (PDT) Received: from localhost.localdomain (97-113-13-231.tukw.qwest.net. [97.113.13.231]) by smtp.gmail.com with ESMTPSA id o6sm18682982pfa.88.2019.05.14.12.17.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 May 2019 12:17:21 -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=O5zIN7a5YhWG7ErE5cL09/UzOmkeLwtbGoogr/y9loY=; b=zBIqfv+Rf+wqMW0YWwon2IO/Kg9oYoaROJ0trx/hb6LtxsvULmwzesApZOkhtpX3oB etsJIXaRkEYkgKQmzwKTh4eT5ncHWZskSLelX74X13NTa1PPQujLeG79oJ8ow2ABrg+5 yvy00zYkGuPxnackbeOD4bb/LOEs0VXvDJV7R0IkpnKNcGQnu2ItRBPQgFS6PuYNYFq0 EdXNLID3Ya7OlWIULRPLXtj63n9M/+vMO0r//kLjIYxeeIoNcV5WawNY7LIqlrJihR5x Yr3+95XjxGEn5kmWUp/mBK7QWS/9OOWE+C2LVg6HIa+SqrOj6+BNRmLARzqrP0YJWsRm kd0A== 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=O5zIN7a5YhWG7ErE5cL09/UzOmkeLwtbGoogr/y9loY=; b=VHTwiR85d/a7MX0xyUGMPKaI1d79S9+v3Qfo+5oVXG57rhaRNJ/4ap4K7yQKDc14DT uOs98DCygj+XJ2eM9efW4t99ydznEicmbj2euDfKpL9JxUIo3ZktNa/FqeCXIwLOJO80 O63nl2yweMM/r3Juf68XdYqFiwQRW6dI4Rs6j0oJoSFquhVRBhCp90GMzoWsTVGa1liu KB1+n4/1wUbzeHsit/eXM3wmTrwbIutmGKQjRBWPABDxoWxTifheYGi1ooEev2zURUpF NaV+U+dOdFP6X/MiRVh2lzxuRaesOzGlvhO5Z1yP5kMaLmoXVBgmep/yg3lMEl5nY4h8 0Dzg== X-Gm-Message-State: APjAAAWii5L6+0MpsG2KAuT6FMsSEatkgj9ry4WfltVW5+dOLV3Yo1Wa R3mSUMW13ouf7DrAG8KxUXO4uYhXUX0= X-Google-Smtp-Source: APXvYqzh4OLgdXteskRFoYUPAOZJQIfER7IR4xozSFmP4dgkjYGdYi2iP4aigcG4ZsqIoGEiGlWlOQ== X-Received: by 2002:a17:902:a510:: with SMTP id s16mr39273364plq.334.1557861442042; Tue, 14 May 2019 12:17:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 14 May 2019 12:16:49 -0700 Message-Id: <20190514191653.31488-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190514191653.31488-1-richard.henderson@linaro.org> References: <20190514191653.31488-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::642 Subject: [Qemu-devel] [PATCH v7 20/24] target/arm: Put all PAC keys into a structure 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: , Cc: lvivier@redhat.com, berrange@redhat.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) This allows us to use a single syscall to initialize them all. Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- target/arm/cpu.h | 12 +++++++----- linux-user/aarch64/cpu_loop.c | 6 +----- linux-user/syscall.c | 10 +++++----- target/arm/helper.c | 20 ++++++++++---------- target/arm/pauth_helper.c | 18 +++++++++--------- 5 files changed, 32 insertions(+), 34 deletions(-) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 733b840a71..892f9a4ad2 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -636,11 +636,13 @@ typedef struct CPUARMState { } iwmmxt; =20 #ifdef TARGET_AARCH64 - ARMPACKey apia_key; - ARMPACKey apib_key; - ARMPACKey apda_key; - ARMPACKey apdb_key; - ARMPACKey apga_key; + struct { + ARMPACKey apia; + ARMPACKey apib; + ARMPACKey apda; + ARMPACKey apdb; + ARMPACKey apga; + } keys; #endif =20 #if defined(CONFIG_USER_ONLY) diff --git a/linux-user/aarch64/cpu_loop.c b/linux-user/aarch64/cpu_loop.c index cedad39ca0..2f2f63e3e8 100644 --- a/linux-user/aarch64/cpu_loop.c +++ b/linux-user/aarch64/cpu_loop.c @@ -175,11 +175,7 @@ void target_cpu_copy_regs(CPUArchState *env, struct ta= rget_pt_regs *regs) #endif =20 if (cpu_isar_feature(aa64_pauth, cpu)) { - qemu_guest_getrandom_nofail(&env->apia_key, sizeof(ARMPACKey)); - qemu_guest_getrandom_nofail(&env->apib_key, sizeof(ARMPACKey)); - qemu_guest_getrandom_nofail(&env->apda_key, sizeof(ARMPACKey)); - qemu_guest_getrandom_nofail(&env->apdb_key, sizeof(ARMPACKey)); - qemu_guest_getrandom_nofail(&env->apga_key, sizeof(ARMPACKey)); + qemu_guest_getrandom_nofail(&env->keys, sizeof(env->keys)); } =20 ts->stack_base =3D info->start_stack; diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 8c17b14d51..394b956b4a 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -9775,23 +9775,23 @@ static abi_long do_syscall1(void *cpu_env, int num,= abi_long arg1, return -TARGET_EINVAL; } if (arg2 & TARGET_PR_PAC_APIAKEY) { - ret |=3D qemu_guest_getrandom(&env->apia_key, + ret |=3D qemu_guest_getrandom(&env->keys.apia, sizeof(ARMPACKey), &er= r); } if (arg2 & TARGET_PR_PAC_APIBKEY) { - ret |=3D qemu_guest_getrandom(&env->apib_key, + ret |=3D qemu_guest_getrandom(&env->keys.apib, sizeof(ARMPACKey), &er= r); } if (arg2 & TARGET_PR_PAC_APDAKEY) { - ret |=3D qemu_guest_getrandom(&env->apda_key, + ret |=3D qemu_guest_getrandom(&env->keys.apda, sizeof(ARMPACKey), &er= r); } if (arg2 & TARGET_PR_PAC_APDBKEY) { - ret |=3D qemu_guest_getrandom(&env->apdb_key, + ret |=3D qemu_guest_getrandom(&env->keys.apdb, sizeof(ARMPACKey), &er= r); } if (arg2 & TARGET_PR_PAC_APGAKEY) { - ret |=3D qemu_guest_getrandom(&env->apga_key, + ret |=3D qemu_guest_getrandom(&env->keys.apga, sizeof(ARMPACKey), &er= r); } if (ret !=3D 0) { diff --git a/target/arm/helper.c b/target/arm/helper.c index 1e6eb0d0f3..7e88b2cadd 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -5707,43 +5707,43 @@ static const ARMCPRegInfo pauth_reginfo[] =3D { { .name =3D "APDAKEYLO_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 2, .crm =3D 2, .opc2 =3D 0, .access =3D PL1_RW, .accessfn =3D access_pauth, - .fieldoffset =3D offsetof(CPUARMState, apda_key.lo) }, + .fieldoffset =3D offsetof(CPUARMState, keys.apda.lo) }, { .name =3D "APDAKEYHI_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 2, .crm =3D 2, .opc2 =3D 1, .access =3D PL1_RW, .accessfn =3D access_pauth, - .fieldoffset =3D offsetof(CPUARMState, apda_key.hi) }, + .fieldoffset =3D offsetof(CPUARMState, keys.apda.hi) }, { .name =3D "APDBKEYLO_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 2, .crm =3D 2, .opc2 =3D 2, .access =3D PL1_RW, .accessfn =3D access_pauth, - .fieldoffset =3D offsetof(CPUARMState, apdb_key.lo) }, + .fieldoffset =3D offsetof(CPUARMState, keys.apdb.lo) }, { .name =3D "APDBKEYHI_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 2, .crm =3D 2, .opc2 =3D 3, .access =3D PL1_RW, .accessfn =3D access_pauth, - .fieldoffset =3D offsetof(CPUARMState, apdb_key.hi) }, + .fieldoffset =3D offsetof(CPUARMState, keys.apdb.hi) }, { .name =3D "APGAKEYLO_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 2, .crm =3D 3, .opc2 =3D 0, .access =3D PL1_RW, .accessfn =3D access_pauth, - .fieldoffset =3D offsetof(CPUARMState, apga_key.lo) }, + .fieldoffset =3D offsetof(CPUARMState, keys.apga.lo) }, { .name =3D "APGAKEYHI_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 2, .crm =3D 3, .opc2 =3D 1, .access =3D PL1_RW, .accessfn =3D access_pauth, - .fieldoffset =3D offsetof(CPUARMState, apga_key.hi) }, + .fieldoffset =3D offsetof(CPUARMState, keys.apga.hi) }, { .name =3D "APIAKEYLO_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 2, .crm =3D 1, .opc2 =3D 0, .access =3D PL1_RW, .accessfn =3D access_pauth, - .fieldoffset =3D offsetof(CPUARMState, apia_key.lo) }, + .fieldoffset =3D offsetof(CPUARMState, keys.apia.lo) }, { .name =3D "APIAKEYHI_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 2, .crm =3D 1, .opc2 =3D 1, .access =3D PL1_RW, .accessfn =3D access_pauth, - .fieldoffset =3D offsetof(CPUARMState, apia_key.hi) }, + .fieldoffset =3D offsetof(CPUARMState, keys.apia.hi) }, { .name =3D "APIBKEYLO_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 2, .crm =3D 1, .opc2 =3D 2, .access =3D PL1_RW, .accessfn =3D access_pauth, - .fieldoffset =3D offsetof(CPUARMState, apib_key.lo) }, + .fieldoffset =3D offsetof(CPUARMState, keys.apib.lo) }, { .name =3D "APIBKEYHI_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 2, .crm =3D 1, .opc2 =3D 3, .access =3D PL1_RW, .accessfn =3D access_pauth, - .fieldoffset =3D offsetof(CPUARMState, apib_key.hi) }, + .fieldoffset =3D offsetof(CPUARMState, keys.apib.hi) }, REGINFO_SENTINEL }; #endif diff --git a/target/arm/pauth_helper.c b/target/arm/pauth_helper.c index d750f96edf..7f30ae7395 100644 --- a/target/arm/pauth_helper.c +++ b/target/arm/pauth_helper.c @@ -403,7 +403,7 @@ uint64_t HELPER(pacia)(CPUARMState *env, uint64_t x, ui= nt64_t y) return x; } pauth_check_trap(env, el, GETPC()); - return pauth_addpac(env, x, y, &env->apia_key, false); + return pauth_addpac(env, x, y, &env->keys.apia, false); } =20 uint64_t HELPER(pacib)(CPUARMState *env, uint64_t x, uint64_t y) @@ -413,7 +413,7 @@ uint64_t HELPER(pacib)(CPUARMState *env, uint64_t x, ui= nt64_t y) return x; } pauth_check_trap(env, el, GETPC()); - return pauth_addpac(env, x, y, &env->apib_key, false); + return pauth_addpac(env, x, y, &env->keys.apib, false); } =20 uint64_t HELPER(pacda)(CPUARMState *env, uint64_t x, uint64_t y) @@ -423,7 +423,7 @@ uint64_t HELPER(pacda)(CPUARMState *env, uint64_t x, ui= nt64_t y) return x; } pauth_check_trap(env, el, GETPC()); - return pauth_addpac(env, x, y, &env->apda_key, true); + return pauth_addpac(env, x, y, &env->keys.apda, true); } =20 uint64_t HELPER(pacdb)(CPUARMState *env, uint64_t x, uint64_t y) @@ -433,7 +433,7 @@ uint64_t HELPER(pacdb)(CPUARMState *env, uint64_t x, ui= nt64_t y) return x; } pauth_check_trap(env, el, GETPC()); - return pauth_addpac(env, x, y, &env->apdb_key, true); + return pauth_addpac(env, x, y, &env->keys.apdb, true); } =20 uint64_t HELPER(pacga)(CPUARMState *env, uint64_t x, uint64_t y) @@ -441,7 +441,7 @@ uint64_t HELPER(pacga)(CPUARMState *env, uint64_t x, ui= nt64_t y) uint64_t pac; =20 pauth_check_trap(env, arm_current_el(env), GETPC()); - pac =3D pauth_computepac(x, y, env->apga_key); + pac =3D pauth_computepac(x, y, env->keys.apga); =20 return pac & 0xffffffff00000000ull; } @@ -453,7 +453,7 @@ uint64_t HELPER(autia)(CPUARMState *env, uint64_t x, ui= nt64_t y) return x; } pauth_check_trap(env, el, GETPC()); - return pauth_auth(env, x, y, &env->apia_key, false, 0); + return pauth_auth(env, x, y, &env->keys.apia, false, 0); } =20 uint64_t HELPER(autib)(CPUARMState *env, uint64_t x, uint64_t y) @@ -463,7 +463,7 @@ uint64_t HELPER(autib)(CPUARMState *env, uint64_t x, ui= nt64_t y) return x; } pauth_check_trap(env, el, GETPC()); - return pauth_auth(env, x, y, &env->apib_key, false, 1); + return pauth_auth(env, x, y, &env->keys.apib, false, 1); } =20 uint64_t HELPER(autda)(CPUARMState *env, uint64_t x, uint64_t y) @@ -473,7 +473,7 @@ uint64_t HELPER(autda)(CPUARMState *env, uint64_t x, ui= nt64_t y) return x; } pauth_check_trap(env, el, GETPC()); - return pauth_auth(env, x, y, &env->apda_key, true, 0); + return pauth_auth(env, x, y, &env->keys.apda, true, 0); } =20 uint64_t HELPER(autdb)(CPUARMState *env, uint64_t x, uint64_t y) @@ -483,7 +483,7 @@ uint64_t HELPER(autdb)(CPUARMState *env, uint64_t x, ui= nt64_t y) return x; } pauth_check_trap(env, el, GETPC()); - return pauth_auth(env, x, y, &env->apdb_key, true, 1); + return pauth_auth(env, x, y, &env->keys.apdb, true, 1); } =20 uint64_t HELPER(xpaci)(CPUARMState *env, uint64_t a) --=20 2.17.1 From nobody Sat Apr 20 08:48:15 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1557862439; cv=none; d=zoho.com; s=zohoarc; b=jOSk20iEtbiLHBQh1wNkC6DSREpy3f7MjyHb7wKFS3SSky3GnMTj92MtYsnjGLfAbxMVj352gRSCe7JxQ1FgyHtQ2UIezLSDCi1ThiZnTi6Admh6FM46mKIxotVQbUrKdDGSmNETnc7JOM5LkfgHMV/SsWccqM8zDedUmXyD2io= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557862439; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=ztXvGPgxsfNQ6iDCN/IIJ1leMuVNwtZhgkaITTqSNbM=; b=mptgu5mxjuPxUSbWycz7rz77d7dYh6BhSld9aA/9F9a4+IXh6pcL9amBfdybH0o7esWm+9KLZwRuZ3ExfRgxBzcm7n2yzubMO0EVYq+RzlyXXt/I5csXQvXqw7IHymMQynSfvGKa/wMcL45tid7FVlpRSsPLOktsqL1vX1nq6Ms= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557862439575913.0246480051788; Tue, 14 May 2019 12:33:59 -0700 (PDT) Received: from localhost ([127.0.0.1]:53142 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQdBR-000874-FC for importer@patchew.org; Tue, 14 May 2019 15:33:53 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48999) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcvZ-0002kz-92 for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQcvX-0007BA-Cy for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:29 -0400 Received: from mail-pg1-x544.google.com ([2607:f8b0:4864:20::544]:32870) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQcvV-00077v-Cq for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:27 -0400 Received: by mail-pg1-x544.google.com with SMTP id h17so59151pgv.0 for ; Tue, 14 May 2019 12:17:24 -0700 (PDT) Received: from localhost.localdomain (97-113-13-231.tukw.qwest.net. [97.113.13.231]) by smtp.gmail.com with ESMTPSA id o6sm18682982pfa.88.2019.05.14.12.17.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 May 2019 12:17:22 -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; bh=ztXvGPgxsfNQ6iDCN/IIJ1leMuVNwtZhgkaITTqSNbM=; b=NmvaCxP8/NUxTJKhpruWGlr0tMYYMFV7E7HC63sZmEEcWQ5JGtCxZreUnu9lYonhW7 /K7oFc6yW/a9VEBSpMdrmJAX24RhNvvE8fv571LcPkSoGrBt6X8Og/+k+fZ41aeceObD 7oezAV1fuN9v/LA7twFpZMwhYmu5ZEr3vSp4kXROofKFKPITjvrR+mE8R9CksiqIrASw ZZWeLt90GsGZfQScLtBs9gZfNwnaU5g6i//jfa3+f2AZo29kQs57paMLs7Ap083MsesS Beng3oXl1G+NxMd49SQLb2+vJN3zgdNH2/WF5tJ52jyF3vCSVl/h+3c8gleQLrld+ime PHFw== 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; bh=ztXvGPgxsfNQ6iDCN/IIJ1leMuVNwtZhgkaITTqSNbM=; b=lklb3/H3FX4Wn0P+LzSMhzAfFkzn34sbvgg+AIXdxtBBLv7G7u5BVwV9o9k8gbyD5g feUIXXx1X9jnJNaWLRaV/8kf49APaJqidO2AUNWys3MnM4RNaXv2ITQJ2NBwr5f6Q+1X fpQMDEQo3taKhfl40OcEnmBc6pZipvMuKkIj7l5WfVW5R076oNPmJd8hCDjESjPZ9WHw WbaQI13jGZFUWgj0ycdGpuytQEyhogqpe3Gu5oBB81hRqqbT8GyI7uxPcpU0xOSWOR6r L+fwMIj/WPa1rSgKdHCs7/GSG8XHpeonSloL0VaawkiqF2dIKOG+6mZupwtNmQRhbKAT tmNA== X-Gm-Message-State: APjAAAW1bPCJ/OlxMbExLvoVk1K46ErAhbDLYZ2MOc2R2FevgX021cJf 05QClEVyRLV7BSeC8D8Iadox1OWgcKs= X-Google-Smtp-Source: APXvYqyg8Fw8K84BSlQ2CnlrHqcDrdZ5jDnHzOIxwshQItivEDX4dQ4oXeimKS6wROThOvgq2CVofA== X-Received: by 2002:a63:6fcf:: with SMTP id k198mr39296225pgc.158.1557861443281; Tue, 14 May 2019 12:17:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 14 May 2019 12:16:50 -0700 Message-Id: <20190514191653.31488-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190514191653.31488-1-richard.henderson@linaro.org> References: <20190514191653.31488-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::544 Subject: [Qemu-devel] [PATCH v7 21/24] target/arm: Implement ARMv8.5-RNG 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: , Cc: lvivier@redhat.com, berrange@redhat.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Use the newly introduced infrastructure for guest random numbers. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/cpu.h | 5 +++++ target/arm/cpu64.c | 1 + target/arm/helper.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 892f9a4ad2..c34207611b 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -3521,6 +3521,11 @@ static inline bool isar_feature_aa64_condm_5(const A= RMISARegisters *id) return FIELD_EX64(id->id_aa64isar0, ID_AA64ISAR0, TS) >=3D 2; } =20 +static inline bool isar_feature_aa64_rndr(const ARMISARegisters *id) +{ + return FIELD_EX64(id->id_aa64isar0, ID_AA64ISAR0, RNDR) !=3D 0; +} + static inline bool isar_feature_aa64_jscvt(const ARMISARegisters *id) { return FIELD_EX64(id->id_aa64isar1, ID_AA64ISAR1, JSCVT) !=3D 0; diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c index 228906f267..835f73cceb 100644 --- a/target/arm/cpu64.c +++ b/target/arm/cpu64.c @@ -310,6 +310,7 @@ static void aarch64_max_initfn(Object *obj) t =3D FIELD_DP64(t, ID_AA64ISAR0, DP, 1); t =3D FIELD_DP64(t, ID_AA64ISAR0, FHM, 1); t =3D FIELD_DP64(t, ID_AA64ISAR0, TS, 2); /* v8.5-CondM */ + t =3D FIELD_DP64(t, ID_AA64ISAR0, RNDR, 1); cpu->isar.id_aa64isar0 =3D t; =20 t =3D cpu->isar.id_aa64isar1; diff --git a/target/arm/helper.c b/target/arm/helper.c index 7e88b2cadd..1e90f4d722 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -22,6 +22,8 @@ #include "fpu/softfloat.h" #include "qemu/range.h" #include "qapi/qapi-commands-target.h" +#include "qapi/error.h" +#include "qemu/guest-random.h" =20 #define ARM_CPU_FREQ 1000000000 /* FIXME: 1 GHz, should be configurable */ =20 @@ -5746,6 +5748,45 @@ static const ARMCPRegInfo pauth_reginfo[] =3D { .fieldoffset =3D offsetof(CPUARMState, keys.apib.hi) }, REGINFO_SENTINEL }; + +static uint64_t rndr_readfn(CPUARMState *env, const ARMCPRegInfo *ri) +{ + Error *err =3D NULL; + uint64_t ret; + + /* Success sets NZCV =3D 0000. */ + env->NF =3D env->CF =3D env->VF =3D 0, env->ZF =3D 1; + + if (qemu_guest_getrandom(&ret, sizeof(ret), &err) < 0) { + /* + * ??? Failed, for unknown reasons in the crypto subsystem. + * The best we can do is log the reason and return the + * timed-out indication to the guest. There is no reason + * we know to expect this failure to be transitory, so the + * guest may well hang retrying the operation. + */ + qemu_log_mask(LOG_UNIMP, "%s: Crypto failure: %s", + ri->name, error_get_pretty(err)); + error_free(err); + + env->ZF =3D 0; /* NZCF =3D 0100 */ + return 0; + } + return ret; +} + +/* We do not support re-seeding, so the two registers operate the same. */ +static const ARMCPRegInfo rndr_reginfo[] =3D { + { .name =3D "RNDR", .state =3D ARM_CP_STATE_AA64, + .type =3D ARM_CP_NO_RAW | ARM_CP_SUPPRESS_TB_END | ARM_CP_IO, + .opc0 =3D 3, .opc1 =3D 3, .crn =3D 2, .crm =3D 4, .opc2 =3D 0, + .access =3D PL0_R, .readfn =3D rndr_readfn }, + { .name =3D "RNDRRS", .state =3D ARM_CP_STATE_AA64, + .type =3D ARM_CP_NO_RAW | ARM_CP_SUPPRESS_TB_END | ARM_CP_IO, + .opc0 =3D 3, .opc1 =3D 3, .crn =3D 2, .crm =3D 4, .opc2 =3D 1, + .access =3D PL0_R, .readfn =3D rndr_readfn }, + REGINFO_SENTINEL +}; #endif =20 static CPAccessResult access_predinv(CPUARMState *env, const ARMCPRegInfo = *ri, @@ -6690,6 +6731,9 @@ void register_cp_regs_for_features(ARMCPU *cpu) if (cpu_isar_feature(aa64_pauth, cpu)) { define_arm_cp_regs(cpu, pauth_reginfo); } + if (cpu_isar_feature(aa64_rndr, cpu)) { + define_arm_cp_regs(cpu, rndr_reginfo); + } #endif =20 /* --=20 2.17.1 From nobody Sat Apr 20 08:48:15 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1557862881; cv=none; d=zoho.com; s=zohoarc; b=VmY9Rqs3u3Sgsz3gzMz1jHujaoS/bPCxCMFcWP2uMv91jglpHT4Fp+4qXufYqF8j/MswaJ58IiqaoQL6YFxZLGe1RqMuqD35zKE+l30m41Dxae3KD0JlonYL15D3M31m6jtQIAj/bxK7d8kOYBPl7BfPrESqMzwCHE6mDaWWX4I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557862881; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=bpjcbv60JSWpD1TbbxFv9kSVFeLonJbRE1N/VVDdCYY=; b=h12tntzvJZ2ltL09/cVXU/k1fAdh8hj5WNItLeeIMQWrNVViMKPwtePo8ZCYNFffWhx7MLz7Y9/bNNNayGLeJAwHuh84228P5O7Vbp7yqDeWC1tBWQ9fIrjiNweyJnVcxT8e0+OGMvp9EdcAbUc1Tj2KEfAu/pI5FRc9KbP7stI= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557862881511325.6262509449141; Tue, 14 May 2019 12:41:21 -0700 (PDT) Received: from localhost ([127.0.0.1]:53297 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQdIZ-0005WG-8K for importer@patchew.org; Tue, 14 May 2019 15:41:15 -0400 Received: from eggs.gnu.org ([209.51.188.92]:49016) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcvd-0002o9-25 for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQcvZ-0007Cx-8Q for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:31 -0400 Received: from mail-pf1-x442.google.com ([2607:f8b0:4864:20::442]:41159) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQcvX-00078h-Ah for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:27 -0400 Received: by mail-pf1-x442.google.com with SMTP id q17so1141636pfq.8 for ; Tue, 14 May 2019 12:17:25 -0700 (PDT) Received: from localhost.localdomain (97-113-13-231.tukw.qwest.net. [97.113.13.231]) by smtp.gmail.com with ESMTPSA id o6sm18682982pfa.88.2019.05.14.12.17.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 May 2019 12:17:23 -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; bh=bpjcbv60JSWpD1TbbxFv9kSVFeLonJbRE1N/VVDdCYY=; b=PlxewZmjyDw1MRMeUJq5NHFmH8hnskUokgZSO9xNh1AbLmV6hnE0Mn4KI/rIai48Iv hxBBfjK55wezLBn1LuyPqmYy5226oZhqeMfzAc5igpSsKrNRja+lg8xstqn3vDwAYyWS DVboJI3YJGV1aHZMxtpt5AiF2qQKJGKoUKKJR2fo41bh5ApjZ4yUJTJ2Y2tP+k5TOjUr Si368T13i4bNNK9DjsCs0Zz7rJI9DoLHHgNc2qp2MEjjJUwPakxCt/qKKp61KwxoT9l+ YNWD8zWKFJzmY7RxjZepLkB5l5CJUsANyh9TUbwep7GqigsT8ttd4C96CGhc9HOP7+rQ Iepg== 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; bh=bpjcbv60JSWpD1TbbxFv9kSVFeLonJbRE1N/VVDdCYY=; b=Hbw9beNr9Gj/NrwHN5/36WMA3nb9OYqIOyveDJxel0gmonwpZvNDpdZ6ajthHRJEAk KJAoivtURKeLe6WEADJENZJ27f8zSJaE1KwTad9hJGZo+EfthV2gyy/S1ypYnLkNZsPJ 1QJf0Dv6S44d2j1Mt7T1gwD3MD9W3qxWQ/mcSHTP1BM7W/FlZs5vCMJ5KYAZICgSXMbS b47250VPZFeZ1cxXSOtcP1jHXcfjVeSHjwjdSKL73QLMuxH5gx22knmyAbMmEdJKMN7C Khwm+f7ZqqsMgbGP8uqS1DX9A+CB2JjrXsbtSg16uNpC+mwJ7OHW9Vf7zXpoYKAhw/e5 rwWA== X-Gm-Message-State: APjAAAWCnQIADO9hHlwPIGP76HfBYFcATMjM8Z6GhmysNOlEfJlMMp47 E+jbEsu6GF6BrEYtWzSspVFTY3tvUWs= X-Google-Smtp-Source: APXvYqx5ggnrQV9UR+JDa7uh56AXaV2FZzqhvrMeq6hlcOc+Ou8MLx5PeHaBJe9bg2ppe3duWRTdwA== X-Received: by 2002:a63:3e41:: with SMTP id l62mr1294578pga.383.1557861444603; Tue, 14 May 2019 12:17:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 14 May 2019 12:16:51 -0700 Message-Id: <20190514191653.31488-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190514191653.31488-1-richard.henderson@linaro.org> References: <20190514191653.31488-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::442 Subject: [Qemu-devel] [PATCH v7 22/24] target/ppc: Use qemu_guest_getrandom for DARN 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: , Cc: lvivier@redhat.com, berrange@redhat.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" We now have an interface for guest visible random numbers. Acked-by: David Gibson Reviewed-by: Laurent Vivier Signed-off-by: Richard Henderson --- target/ppc/int_helper.c | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/target/ppc/int_helper.c b/target/ppc/int_helper.c index f6a088ac08..9af779ad38 100644 --- a/target/ppc/int_helper.c +++ b/target/ppc/int_helper.c @@ -23,6 +23,8 @@ #include "exec/helper-proto.h" #include "crypto/aes.h" #include "fpu/softfloat.h" +#include "qapi/error.h" +#include "qemu/guest-random.h" =20 #include "helper_regs.h" /*************************************************************************= ****/ @@ -158,25 +160,38 @@ uint32_t helper_cmpeqb(target_ulong ra, target_ulong = rb) #undef hasvalue =20 /* - * Return invalid random number. - * - * FIXME: Add rng backend or other mechanism to get cryptographically suit= able - * random number + * Return a random number. */ -target_ulong helper_darn32(void) +uint64_t helper_darn32(void) { - return -1; + Error *err =3D NULL; + uint32_t ret; + + if (qemu_guest_getrandom(&ret, sizeof(ret), &err) < 0) { + qemu_log_mask(LOG_UNIMP, "darn: Crypto failure: %s", + error_get_pretty(err)); + error_free(err); + return -1; + } + + return ret; } =20 -target_ulong helper_darn64(void) +uint64_t helper_darn64(void) { - return -1; + Error *err =3D NULL; + uint64_t ret; + + if (qemu_guest_getrandom(&ret, sizeof(ret), &err) < 0) { + qemu_log_mask(LOG_UNIMP, "darn: Crypto failure: %s", + error_get_pretty(err)); + error_free(err); + return -1; + } + + return ret; } =20 -#endif - -#if defined(TARGET_PPC64) - uint64_t helper_bpermd(uint64_t rs, uint64_t rb) { int i; --=20 2.17.1 From nobody Sat Apr 20 08:48:15 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1557861931; cv=none; d=zoho.com; s=zohoarc; b=R00vdP2CzMmdbMNz2npq5rUIivDPp4ct8eH2+mEMhjbI5iCle0En2zk5GdCbHifUGmFX0u4uD8UnBhbkzS7kwZ5vHxW/0F9m6P1emAd6mKhDkRxC1ddd/KnIpeJlcu/ykamcvYhWuyt+/Ty6Kl8PXQKJWKfVFINZz6i4UFW5Vy8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557861931; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=jubgcMuTGNSY5TtGEwh0c6OxeP3qp5DidyhAq6jVSSw=; b=Ho5MUlE/1BLbEeqnIMVSGu3PviE0wGsK87DoasdfOi5/oHOagEyo06LXDhLbU6AKoRsoGA+B3183Sqs+uZhgfdPWxwNu7EJa9pvpOZagSDXOET47AyVqfZgVH7JuPIibjXEQ6ozyQflxx3bv+IKMTGPjmi/HZ7w5oSeJXQ8fdAk= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557861931472913.8518872262175; Tue, 14 May 2019 12:25:31 -0700 (PDT) Received: from localhost ([127.0.0.1]:53006 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQd3H-0000Yp-EA for importer@patchew.org; Tue, 14 May 2019 15:25:27 -0400 Received: from eggs.gnu.org ([209.51.188.92]:49015) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcvd-0002o8-1y for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQcvZ-0007D5-AD for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:31 -0400 Received: from mail-pf1-x443.google.com ([2607:f8b0:4864:20::443]:45597) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQcvX-0007A2-CC for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:28 -0400 Received: by mail-pf1-x443.google.com with SMTP id s11so9613058pfm.12 for ; Tue, 14 May 2019 12:17:26 -0700 (PDT) Received: from localhost.localdomain (97-113-13-231.tukw.qwest.net. [97.113.13.231]) by smtp.gmail.com with ESMTPSA id o6sm18682982pfa.88.2019.05.14.12.17.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 May 2019 12:17:25 -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; bh=jubgcMuTGNSY5TtGEwh0c6OxeP3qp5DidyhAq6jVSSw=; b=USq6jzxMgaDUaG3WM5mv/86HAk8ydS51FPFNqcritjxxEKAosVlp5suwP9i/dIjTav g3btabJUyGGeeUvdNCD2n006RMXNCr8HJhUowRVkirYEJYCPKg9lQ6o4cngo6OfoIX4v MT7Re2niSRdtLT1amhr69tPvfXiDoIUR0uPMDi/lK8ct3Vt82XMHRyaBCSkVHLb/deF4 e/j4j/qLRCHr011Kwqi9WQI7UJuNQ+CpBx19x8Wxum7R+BRTWJashGP4hr+8/fzKityc Q/ZJVDSyAo8B5Gc+6BO30SzXT6Bb9PFKi2dyPOIHU8YVho64enIFGigrCDePbVICpiej xFeg== 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; bh=jubgcMuTGNSY5TtGEwh0c6OxeP3qp5DidyhAq6jVSSw=; b=AgmFE9o9fkqVZ2cgrp1acYf60mAfhAFXXw/HDQvzawl7bLVzQIpEj/hbJVawZz8odU slrGFrIYuGsK73BB1I3HvHhsQPsFtK+Ga91GRyH7a0R5yjy3vlEIB/h5NKveEbYX4pD3 RGeLCBcW9Q2GKWdUZvHn3GH4yVm++2niC81pjyh9IQ9uZK/jkjw7zRH+JscfBlba/ykG AcscsychIByBnQZbBIQzXwoZCIS2AXalFo738TlGdNO0Cc6BAmhpdp2EERLSI9QiIcBg OjgLH4gNwEXld3AKBwiy4VfpmUkYvr8+T2n747felCFvt5UQu9QAGIqI0D/DDysgWFbv XxdQ== X-Gm-Message-State: APjAAAUY+//co7YGcBLJkAzvAXf7B3/Q12aKNJwPNzd3lkY3SqXaZ8js q/5eT2pP7iGJQ9QC9bxejAYgTmSHSKQ= X-Google-Smtp-Source: APXvYqwN/XIu5YDFP20JIHiUC2To3EhR3h5sdDctRk+h4VOrAcg6pXgoK2DkJf9XGWtWTVvLATLj3w== X-Received: by 2002:a62:2687:: with SMTP id m129mr43682012pfm.204.1557861445759; Tue, 14 May 2019 12:17:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 14 May 2019 12:16:52 -0700 Message-Id: <20190514191653.31488-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190514191653.31488-1-richard.henderson@linaro.org> References: <20190514191653.31488-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::443 Subject: [Qemu-devel] [PATCH v7 23/24] target/ppc: Use gen_io_start/end around DARN 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: , Cc: lvivier@redhat.com, berrange@redhat.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Generating a random number counts as I/O, as it cannot be replayed and produce the same results. Acked-by: David Gibson Reviewed-by: Laurent Vivier Suggested-by: Peter Maydell Signed-off-by: Richard Henderson --- target/ppc/translate.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/target/ppc/translate.c b/target/ppc/translate.c index b5217f632f..4a5de28036 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -1847,13 +1847,22 @@ static void gen_darn(DisasContext *ctx) { int l =3D L(ctx->opcode); =20 - if (l =3D=3D 0) { - gen_helper_darn32(cpu_gpr[rD(ctx->opcode)]); - } else if (l <=3D 2) { - /* Return 64-bit random for both CRN and RRN */ - gen_helper_darn64(cpu_gpr[rD(ctx->opcode)]); - } else { + if (l > 2) { tcg_gen_movi_i64(cpu_gpr[rD(ctx->opcode)], -1); + } else { + if (tb_cflags(ctx->base.tb) & CF_USE_ICOUNT) { + gen_io_start(); + } + if (l =3D=3D 0) { + gen_helper_darn32(cpu_gpr[rD(ctx->opcode)]); + } else { + /* Return 64-bit random for both CRN and RRN */ + gen_helper_darn64(cpu_gpr[rD(ctx->opcode)]); + } + if (tb_cflags(ctx->base.tb) & CF_USE_ICOUNT) { + gen_io_end(); + gen_stop_exception(ctx); + } } } #endif --=20 2.17.1 From nobody Sat Apr 20 08:48:15 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1557862562; cv=none; d=zoho.com; s=zohoarc; b=efKkKoLswrImt/BIY53H5N+rWHQI8LF+s6uLKqzIjRqzYV7xPeVCgwx7Wesg98WS15WiuZj8Ox8CPWSrDBy3tFR7rdbkllBPZaN+Q9q/Vk+Xk5TNdXWjTg08Uze/LkmZY5wjyc2tmhqbqd4sEkZcUqZZ6Op6h/0PRU6b81yC94c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557862562; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=HYIlEI5x7dSKPn06Te85N+SIxFZI2TsRzdSqKh133IE=; b=bWL3q2BcQ+768RRgfRiUWNE8xzbV5IrsTFn6oKPPN9wxmKnzD9mLvKNKCivhRDeYc4NklnHZWLYpKtcDfRKikGR+4xMguACue/+7i7sAHlMqatykXe0+nB/Bmy9c4wLrZgw2SxBjcjmL8ClYc2bVQTYC4QaVr6e/HmGaqv3QJfs= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557862562616909.0859038006517; Tue, 14 May 2019 12:36:02 -0700 (PDT) Received: from localhost ([127.0.0.1]:53199 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQdDS-0001Fr-F8 for importer@patchew.org; Tue, 14 May 2019 15:35:58 -0400 Received: from eggs.gnu.org ([209.51.188.92]:49032) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQcve-0002q5-W9 for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQcvd-0007Fb-3Q for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:34 -0400 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]:39626) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQcvZ-0007BT-8w for qemu-devel@nongnu.org; Tue, 14 May 2019 15:17:30 -0400 Received: by mail-pf1-x435.google.com with SMTP id z26so3276pfg.6 for ; Tue, 14 May 2019 12:17:28 -0700 (PDT) Received: from localhost.localdomain (97-113-13-231.tukw.qwest.net. [97.113.13.231]) by smtp.gmail.com with ESMTPSA id o6sm18682982pfa.88.2019.05.14.12.17.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 May 2019 12:17:26 -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; bh=HYIlEI5x7dSKPn06Te85N+SIxFZI2TsRzdSqKh133IE=; b=rKeBW048rbZAKp/CQy6+FJuXXCdeRR2f6Ts45gVcCljIN/N82Tov1OXogSF2BQ+nu3 p0ml1kairTTI5Kw2R4tprTPkM7ahsLng3NDQUT/uioO6RD/roEgxHZP2AbtnIbRBA2Vu wpdBU+9T9w5wDR2qnEVofHe7b6c1do+3v+3Wwz5h5hyY7m/k4/p/cZocV/s4wd4ogRff 58ixcZmQLoKiOYT1X9E4HZauwsPaQoLvQ7fQckvGP5dtAhbi4tf03nKMhGCTAXwcjpAZ 15HzfXCpEhfKd07SyuJmbbIDTcj1c+AwtztkwLURq3UH+G8RCO+w1fUNhXDSnhqcA8FM Q19g== 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; bh=HYIlEI5x7dSKPn06Te85N+SIxFZI2TsRzdSqKh133IE=; b=ajgOl51aP9gMhmVuRAlCE249MLQLjI8LiLuWKoz834Hx/PfYAz0scOfy5E92gRR24D 2T3X6KuivZ8dRkaxIsGNMrzcvL+3OF87xCKjhxtzNvA9qeiZ1YW9deGOnfxHAV3LZDnt dtetgaleUnS4hCO8dnmxg78y2P+jg9uwPC+U/OAupFGOyxpDGeRgzdHQuUPce4EFfyfA gihGwRzhxxLEBl6MksDjHLuTWQLoVRjCqW+YCpSwaQKCSCR2Qjbvn89wfqG0p0Szzmyh GxuneRkE8tT0pBpX/1gkh13HQ09sXDEA7w3PYLqgXpEwha15w//0Gg807wN7pVfgnd7p R1Aw== X-Gm-Message-State: APjAAAVwtI7Y3/zkeOYJI7IJC09Cfy75ff0sTNj17hkZ3t3OkmOx2VM/ SbOFAGfMW6JDbWfvZ/x2XiJUmUWCFZ4= X-Google-Smtp-Source: APXvYqzTaW5y4dDA3M93EsxYFpU2SzQN44j92Hy4r4lcVyAFL+oFd3SJPsyM/uG2XEZAzoRoGhYXwg== X-Received: by 2002:a62:6d47:: with SMTP id i68mr42667690pfc.189.1557861446957; Tue, 14 May 2019 12:17:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 14 May 2019 12:16:53 -0700 Message-Id: <20190514191653.31488-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190514191653.31488-1-richard.henderson@linaro.org> References: <20190514191653.31488-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::435 Subject: [Qemu-devel] [PATCH v7 24/24] target/i386: Implement CPUID_EXT_RDRAND 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: , Cc: lvivier@redhat.com, berrange@redhat.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" We now have an interface for guest visible random numbers. Reviewed-by: Eduardo Habkost Signed-off-by: Richard Henderson --- target/i386/helper.h | 2 ++ target/i386/cpu.c | 5 ++-- target/i386/int_helper.c | 21 ++++++++++++++ target/i386/translate.c | 62 ++++++++++++++++++++++++++++++---------- 4 files changed, 73 insertions(+), 17 deletions(-) diff --git a/target/i386/helper.h b/target/i386/helper.h index 6fb8fb9b74..8f9e1905c3 100644 --- a/target/i386/helper.h +++ b/target/i386/helper.h @@ -226,3 +226,5 @@ DEF_HELPER_3(rcrl, tl, env, tl, tl) DEF_HELPER_3(rclq, tl, env, tl, tl) DEF_HELPER_3(rcrq, tl, env, tl, tl) #endif + +DEF_HELPER_1(rdrand, tl, env) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 722c5514d4..1386814957 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -730,13 +730,14 @@ static void x86_cpu_vendor_words2str(char *dst, uint3= 2_t vendor1, CPUID_EXT_MONITOR | CPUID_EXT_SSSE3 | CPUID_EXT_CX16 | \ CPUID_EXT_SSE41 | CPUID_EXT_SSE42 | CPUID_EXT_POPCNT | \ CPUID_EXT_XSAVE | /* CPUID_EXT_OSXSAVE is dynamic */ \ - CPUID_EXT_MOVBE | CPUID_EXT_AES | CPUID_EXT_HYPERVISOR) + CPUID_EXT_MOVBE | CPUID_EXT_AES | CPUID_EXT_HYPERVISOR | \ + CPUID_EXT_RDRAND) /* missing: CPUID_EXT_DTES64, CPUID_EXT_DSCPL, CPUID_EXT_VMX, CPUID_EXT_SMX, CPUID_EXT_EST, CPUID_EXT_TM2, CPUID_EXT_CID, CPUID_EXT_FMA, CPUID_EXT_XTPR, CPUID_EXT_PDCM, CPUID_EXT_PCID, CPUID_EXT_DCA, CPUID_EXT_X2APIC, CPUID_EXT_TSC_DEADLINE_TIMER, CPUID_EXT_AVX, - CPUID_EXT_F16C, CPUID_EXT_RDRAND */ + CPUID_EXT_F16C */ =20 #ifdef TARGET_X86_64 #define TCG_EXT2_X86_64_FEATURES (CPUID_EXT2_SYSCALL | CPUID_EXT2_LM) diff --git a/target/i386/int_helper.c b/target/i386/int_helper.c index 4dc5c65991..334469ca8c 100644 --- a/target/i386/int_helper.c +++ b/target/i386/int_helper.c @@ -22,6 +22,8 @@ #include "exec/exec-all.h" #include "qemu/host-utils.h" #include "exec/helper-proto.h" +#include "qapi/error.h" +#include "qemu/guest-random.h" =20 //#define DEBUG_MULDIV =20 @@ -470,3 +472,22 @@ void helper_cr4_testbit(CPUX86State *env, uint32_t bit) raise_exception_ra(env, EXCP06_ILLOP, GETPC()); } } + +target_ulong HELPER(rdrand)(CPUX86State *env) +{ + Error *err =3D NULL; + target_ulong ret; + + if (qemu_guest_getrandom(&ret, sizeof(ret), &err) < 0) { + qemu_log_mask(LOG_UNIMP, "rdrand: Crypto failure: %s", + error_get_pretty(err)); + error_free(err); + /* Failure clears CF and all other flags, and returns 0. */ + env->cc_src =3D 0; + return 0; + } + + /* Success sets CF and clears all others. */ + env->cc_src =3D CC_C; + return ret; +} diff --git a/target/i386/translate.c b/target/i386/translate.c index 77d6b73e42..03150a86e2 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -5332,31 +5332,63 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) case 0x1c7: /* cmpxchg8b */ modrm =3D x86_ldub_code(env, s); mod =3D (modrm >> 6) & 3; - if ((mod =3D=3D 3) || ((modrm & 0x38) !=3D 0x8)) - goto illegal_op; -#ifdef TARGET_X86_64 - if (dflag =3D=3D MO_64) { - if (!(s->cpuid_ext_features & CPUID_EXT_CX16)) + switch ((modrm >> 3) & 7) { + case 1: /* CMPXCHG8, CMPXCHG16 */ + if (mod =3D=3D 3) { goto illegal_op; - gen_lea_modrm(env, s, modrm); - if ((s->prefix & PREFIX_LOCK) && (tb_cflags(s->base.tb) & CF_P= ARALLEL)) { - gen_helper_cmpxchg16b(cpu_env, s->A0); - } else { - gen_helper_cmpxchg16b_unlocked(cpu_env, s->A0); } - } else +#ifdef TARGET_X86_64 + if (dflag =3D=3D MO_64) { + if (!(s->cpuid_ext_features & CPUID_EXT_CX16)) { + goto illegal_op; + } + gen_lea_modrm(env, s, modrm); + if ((s->prefix & PREFIX_LOCK) && + (tb_cflags(s->base.tb) & CF_PARALLEL)) { + gen_helper_cmpxchg16b(cpu_env, s->A0); + } else { + gen_helper_cmpxchg16b_unlocked(cpu_env, s->A0); + } + set_cc_op(s, CC_OP_EFLAGS); + break; + } #endif =20 - { - if (!(s->cpuid_features & CPUID_CX8)) + if (!(s->cpuid_features & CPUID_CX8)) { goto illegal_op; + } gen_lea_modrm(env, s, modrm); - if ((s->prefix & PREFIX_LOCK) && (tb_cflags(s->base.tb) & CF_P= ARALLEL)) { + if ((s->prefix & PREFIX_LOCK) && + (tb_cflags(s->base.tb) & CF_PARALLEL)) { gen_helper_cmpxchg8b(cpu_env, s->A0); } else { gen_helper_cmpxchg8b_unlocked(cpu_env, s->A0); } + set_cc_op(s, CC_OP_EFLAGS); + break; + + case 7: /* RDSEED */ + case 6: /* RDRAND */ + if (mod !=3D 3 || + (s->prefix & (PREFIX_LOCK | PREFIX_REPZ | PREFIX_REPNZ)) || + !(s->cpuid_ext_features & CPUID_EXT_RDRAND)) { + goto illegal_op; + } + if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { + gen_io_start(); + } + gen_helper_rdrand(s->T0, cpu_env); + rm =3D (modrm & 7) | REX_B(s); + gen_op_mov_reg_v(s, dflag, rm, s->T0); + set_cc_op(s, CC_OP_EFLAGS); + if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { + gen_io_end(); + gen_jmp(s, s->pc - s->cs_base); + } + break; + + default: + goto illegal_op; } - set_cc_op(s, CC_OP_EFLAGS); break; =20 /**************************/ --=20 2.17.1