From nobody Wed May 1 22:23:38 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=1558553256; cv=none; d=zoho.com; s=zohoarc; b=b4hTOhIC+3m+Sbyl+TwMhkthCVlMKHojmk3Y+f2cV1x96I5HkoEQKH99rq7K/WGH9WIB4Gsyb26w+l578xTDmlxtmp3RLr9f86MPLbW/rvW7dsehSNDTKomf+o0NxDTCp6ODpOUOYCD5imPErAp7f6QeMqJ16O1xb1bbajdobhM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558553256; 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=9dAwC0S3G/OFyRgp8E8i1RIZB4naA10HcRt0yDU2T20=; b=M/6eJnMj7o3aZ93R5d5961MDvRwoU3aBn6QiZ4sYClvRoQsSTNsFUHjJKASX2r6V9nZqi3CGE1S7OvnKUu8/0aThU5pq46cqbOJIQHDY6w3zpqSoceCfyL9Tva9WC5ylV44llYK0q5zctnRl2AkhsUWDY4q11xwsPt5vd9D4Px4= 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 1558553256074950.5527598829304; Wed, 22 May 2019 12:27:36 -0700 (PDT) Received: from localhost ([127.0.0.1]:50122 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWtX-0002ps-1b for importer@patchew.org; Wed, 22 May 2019 15:27:23 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35052) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWOt-0008Eq-7n for qemu-devel@nongnu.org; Wed, 22 May 2019 14:55:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTWC6-00080U-97 for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:31 -0400 Received: from mail-yw1-xc41.google.com ([2607:f8b0:4864:20::c41]:43108) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTWC6-00080L-43 for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:30 -0400 Received: by mail-yw1-xc41.google.com with SMTP id t5so1232445ywf.10 for ; Wed, 22 May 2019 11:42:30 -0700 (PDT) Received: from localhost.localdomain ([71.46.56.17]) by smtp.gmail.com with ESMTPSA id 206sm1299445ywq.74.2019.05.22.11.42.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 May 2019 11:42:28 -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=9dAwC0S3G/OFyRgp8E8i1RIZB4naA10HcRt0yDU2T20=; b=LYa5PPQMjqAQwlc9/adtwJJpve/N0/a8ZNAdtgKWrLFDagkdPwQrMxI6hY75aCkaaF z0HOpjZ9c1HQ+L6TXYfyGmJJi407J7R1pxpQ69mp0oL9Nl4urdzgsaKq5PnQ81BY9t+b x14XEvjY5L9YpUTd68XgawcXCwAWH8UQrlbNPIWcHiRVqCKetMmA/c4KC4Dw1P8xJxUn idGd4oPoWmdV0tncwe5lRICjyFkKSywsPZdtOyJt2JAp1gZbV6srbJgBNrCgymoTiY4K Kdm8CBp1ptBEgCRQ8CSr5oLLEAWONlNs6ZseTDWZwl/PnH+aAH7aTbN/voW5nG4BvwEu 4G5g== 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=9dAwC0S3G/OFyRgp8E8i1RIZB4naA10HcRt0yDU2T20=; b=Al8MvI7nJcmNMDkLU5teuD2qM4nsJVG0YLGw9b+M4ksr1FjCdWDcN5R8QWyJFMzb0J 9rUd7kjfJlUCRWkkw2ytlHgacytrirJq2ywIIF+ACZeO4OENJdSbiD+p2Krgywp3fN6+ SGos9WWjRvO5CdB1T2/ybPdCqCCDfCHZbqxi87t99dTUiLJcBl1ZZFiP5+P1OnwMxGmE xKKSluztghZvTIGYGj+T/tR7xIBmP3hXffvAgQIUg2rhOgX1OnXRp+HSKijiO0f+nyB9 PopnAs/I0DBR/LZFF69/jCbCrYW/xW2w2U7AwXK2CA9qKkq8DAC9PzHa8PDKLT6SduK1 DNpA== X-Gm-Message-State: APjAAAWWtBKOZcuuwS/VjvXrcG/WKNSXqacuQkt2E3wVtqHYFlEKOTom M7uWFB+7/41IJ398zzy6On+OD6jeCBI= X-Google-Smtp-Source: APXvYqz9VjPXzuNCnHARFaSV36tXY9E9tSU6yPyjYjUW9o2Aeq/cmQuRC47ovZ49Ku0+6PkstO0itg== X-Received: by 2002:a81:8606:: with SMTP id w6mr41845008ywf.344.1558550549179; Wed, 22 May 2019 11:42:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 22 May 2019 14:42:02 -0400 Message-Id: <20190522184226.17871-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190522184226.17871-1-richard.henderson@linaro.org> References: <20190522184226.17871-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::c41 Subject: [Qemu-devel] [PULL 01/25] configure: Link test before auto-enabling crypto libraries 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: peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) At least ubuntu 18.04 does not package static gnutls libraries. At least Fedora 30 does not ship static nettle and gcrypt libraries. Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Laurent Vivier Tested-by: Laurent Vivier Message-Id: <20190510012458.22706-2-richard.henderson@linaro.org> Signed-off-by: Richard Henderson Acked-by: Daniel P. Berrang=C3=A9 Acked-by: Laurent Vivier --- configure | 72 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 44 insertions(+), 28 deletions(-) diff --git a/configure b/configure index d2fc346302..571dd94ee2 100755 --- a/configure +++ b/configure @@ -2784,17 +2784,24 @@ fi # GNUTLS probe =20 if test "$gnutls" !=3D "no"; then + pass=3D"no" if $pkg_config --exists "gnutls >=3D 3.1.18"; then gnutls_cflags=3D$($pkg_config --cflags gnutls) gnutls_libs=3D$($pkg_config --libs gnutls) - libs_softmmu=3D"$gnutls_libs $libs_softmmu" - libs_tools=3D"$gnutls_libs $libs_tools" - QEMU_CFLAGS=3D"$QEMU_CFLAGS $gnutls_cflags" - gnutls=3D"yes" - elif test "$gnutls" =3D "yes"; then + # Packaging for the static libraries is not always correct. + # At least ubuntu 18.04 ships only shared libraries. + write_c_skeleton + if compile_prog "" "$gnutls_libs" ; then + libs_softmmu=3D"$gnutls_libs $libs_softmmu" + libs_tools=3D"$gnutls_libs $libs_tools" + QEMU_CFLAGS=3D"$QEMU_CFLAGS $gnutls_cflags" + pass=3D"yes" + fi + fi + if test "$pass" =3D "no" && test "$gnutls" =3D "yes"; then feature_not_found "gnutls" "Install gnutls devel >=3D 3.1.18" else - gnutls=3D"no" + gnutls=3D"$pass" fi fi =20 @@ -2849,43 +2856,54 @@ has_libgcrypt() { =20 =20 if test "$nettle" !=3D "no"; then + pass=3D"no" if $pkg_config --exists "nettle >=3D 2.7.1"; then nettle_cflags=3D$($pkg_config --cflags nettle) nettle_libs=3D$($pkg_config --libs nettle) nettle_version=3D$($pkg_config --modversion nettle) - libs_softmmu=3D"$nettle_libs $libs_softmmu" - libs_tools=3D"$nettle_libs $libs_tools" - QEMU_CFLAGS=3D"$QEMU_CFLAGS $nettle_cflags" - nettle=3D"yes" - - if test -z "$gcrypt"; then - gcrypt=3D"no" + # Link test to make sure the given libraries work (e.g for static). + write_c_skeleton + if compile_prog "" "$nettle_libs" ; then + libs_softmmu=3D"$nettle_libs $libs_softmmu" + libs_tools=3D"$nettle_libs $libs_tools" + QEMU_CFLAGS=3D"$QEMU_CFLAGS $nettle_cflags" + if test -z "$gcrypt"; then + gcrypt=3D"no" + fi + pass=3D"yes" fi + fi + if test "$pass" =3D "no" && test "$nettle" =3D "yes"; then + feature_not_found "nettle" "Install nettle devel >=3D 2.7.1" else - if test "$nettle" =3D "yes"; then - feature_not_found "nettle" "Install nettle devel >=3D 2.7.1" - else - nettle=3D"no" - fi + nettle=3D"$pass" fi fi =20 if test "$gcrypt" !=3D "no"; then + pass=3D"no" if has_libgcrypt; then gcrypt_cflags=3D$(libgcrypt-config --cflags) gcrypt_libs=3D$(libgcrypt-config --libs) - # Debian has remove -lgpg-error from libgcrypt-config + # Debian has removed -lgpg-error from libgcrypt-config # as it "spreads unnecessary dependencies" which in # turn breaks static builds... if test "$static" =3D "yes" then gcrypt_libs=3D"$gcrypt_libs -lgpg-error" fi - libs_softmmu=3D"$gcrypt_libs $libs_softmmu" - libs_tools=3D"$gcrypt_libs $libs_tools" - QEMU_CFLAGS=3D"$QEMU_CFLAGS $gcrypt_cflags" - gcrypt=3D"yes" =20 + # Link test to make sure the given libraries work (e.g for static). + write_c_skeleton + if compile_prog "" "$gcrypt_libs" ; then + libs_softmmu=3D"$gcrypt_libs $libs_softmmu" + libs_tools=3D"$gcrypt_libs $libs_tools" + QEMU_CFLAGS=3D"$QEMU_CFLAGS $gcrypt_cflags" + pass=3D"yes" + fi + fi + if test "$pass" =3D "yes"; then + gcrypt=3D"yes" cat > $TMPC << EOF #include int main(void) { @@ -2898,12 +2916,10 @@ EOF if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then gcrypt_hmac=3Dyes fi + elif test "$gcrypt" =3D "yes"; then + feature_not_found "gcrypt" "Install gcrypt devel >=3D 1.5.0" else - if test "$gcrypt" =3D "yes"; then - feature_not_found "gcrypt" "Install gcrypt devel >=3D 1.5.0" - else - gcrypt=3D"no" - fi + gcrypt=3D"no" fi fi =20 --=20 2.17.1 From nobody Wed May 1 22:23:38 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=1558552278; cv=none; d=zoho.com; s=zohoarc; b=KAakYErce30Sl3f2MzVZwj8O03bMnGvoaK0PwmIiXROIvgmXTG0DH02LsHIvnuMRp5e2W/myHQ5bD2VZPxJIYr7D8c1yJbxx473kZhGhDeMVvKi5I+fjwn7yBg5nAPhhk8Dyo4Z7LWUCfatCB0sx76rr5Qc0BuXBhXEV6KTk/A8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558552278; 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=i3KWRWimQh5hv++1F1wzio+dP9yFcGqKmqdoYeXPACQ=; b=M/elw4yhmK7U9BFV9Cu85gMuhfgmN9NbkCnZfgxTIYzOJrSGC9V+mAbawXlYv0AQe94aiAm7Aeggc9kRluhRrt4fM13d+7NONtGEkhAonqVlXJHVEanzWErV/AsAeZaA+Lu3+kMNhtd7WGZQa6are7JEE2VrpRlOmVkN0TgTzbs= 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 1558552278128561.6829853029142; Wed, 22 May 2019 12:11:18 -0700 (PDT) Received: from localhost ([127.0.0.1]:49839 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWdp-0005Pn-0M for importer@patchew.org; Wed, 22 May 2019 15:11:09 -0400 Received: from eggs.gnu.org ([209.51.188.92]:34796) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWOt-00086f-5x for qemu-devel@nongnu.org; Wed, 22 May 2019 14:55:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTWC7-00080s-5L for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:32 -0400 Received: from mail-yw1-xc41.google.com ([2607:f8b0:4864:20::c41]:42439) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTWC7-00080m-11 for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:31 -0400 Received: by mail-yw1-xc41.google.com with SMTP id s5so1236491ywd.9 for ; Wed, 22 May 2019 11:42:30 -0700 (PDT) Received: from localhost.localdomain ([71.46.56.17]) by smtp.gmail.com with ESMTPSA id 206sm1299445ywq.74.2019.05.22.11.42.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 May 2019 11:42:29 -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=i3KWRWimQh5hv++1F1wzio+dP9yFcGqKmqdoYeXPACQ=; b=EY20sginGSANyyQGWpVnz88xzaVI8p1N/CE5IO6cvsAohKVfSeLPJnUf2AwbrLFGJ+ 2rJNjlxwswchdn05UCtFM+of1bthCMjgAkfX7jiQWv+RbapxPopt2g/OXtaRCPzcQtZx u6SFCqWVYHv9HaxUzVvOXoX8JX8vL/P/61/EPpEql+GYO3XIFfjW8RzeRVfjFEFVOlUS v/g/2AJHg3SK7HSeYYevEgRmHAmtSzlwgp8NNYajLxtxeyoTTM/Wshd/Txs38Mwl6nf3 t6Zon2ZhyVca6yuRJApDQ9PyZWCZT0WITOgOYT+akJ8eDDyAy0b5DZZeA4mMeV91fdun mmZw== 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=i3KWRWimQh5hv++1F1wzio+dP9yFcGqKmqdoYeXPACQ=; b=grSVbW0nrl6lfQIlLbVHClOchKLCdcKPOxhAjScRZzh2bUQn9/dhMTqj0K3RrfceIz Miot5zEIgVwh1rEwHN3tM+QWQ8lTFnpCdhSvVo4CVRWA/U4JyJlsQNFlyXx7AMEa3m/m lv1ilkjeoLEGRvu0y8n9/VKUr6svnCSFDw7P+fcDcFehmaDmJ1Dpol1Y6xB+Xz+eg3XA 9zWJ/dVziQwtfTEfwWroM/6xTksd5vP3eaatYHToZJrVuqcUXho3+GJR0gjVWef4K1gl WeHKzkq3JEfhFJtjTdKBRq0fcnQcQdl3YFglQU3KQYISnDQMeBDuxE+RH8vr30J4r3hz TyHQ== X-Gm-Message-State: APjAAAXtZ586Gvq7zoxSxlhZaLM88hCC4fP4DZDxIBlA++xm9/IFVTib M5dbRUnjX/nsDFxsRtO+FrO36lTldwQ= X-Google-Smtp-Source: APXvYqz0hye9RW6bhvMLd6CU6i31pKQd7Vr+uKlBjKUzRVR0puwjqUdvJI8US/8cyEkpSc7m7gzZyg== X-Received: by 2002:a0d:c707:: with SMTP id j7mr40724434ywd.250.1558550550226; Wed, 22 May 2019 11:42:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 22 May 2019 14:42:03 -0400 Message-Id: <20190522184226.17871-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190522184226.17871-1-richard.henderson@linaro.org> References: <20190522184226.17871-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::c41 Subject: [Qemu-devel] [PULL 02/25] build: Link user-only with crypto random number objects 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: peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) For user-only, we require only the random number bits of the crypto subsystem. Rename crypto-aes-obj-y to crypto-user-obj-y, and add the random number objects, plus init.o to handle any extra stuff the crypto library requires. Move the crypto libraries from libs_softmmu and libs_tools to LIBS, so that they are universally used. Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Richard Henderson Acked-by: Daniel P. Berrang=C3=A9 Acked-by: Laurent Vivier --- Makefile | 4 ++-- Makefile.objs | 2 +- Makefile.target | 4 ++-- configure | 9 +++------ crypto/Makefile.objs | 11 ++++++----- 5 files changed, 14 insertions(+), 16 deletions(-) diff --git a/Makefile b/Makefile index 155f066a20..3dbe82a9e4 100644 --- a/Makefile +++ b/Makefile @@ -412,7 +412,7 @@ dummy :=3D $(call unnest-vars,, \ block-obj-y \ block-obj-m \ crypto-obj-y \ - crypto-aes-obj-y \ + crypto-user-obj-y \ qom-obj-y \ io-obj-y \ common-obj-y \ @@ -486,7 +486,7 @@ 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) \ - $(qom-obj-y) $(crypto-aes-obj-$(CONFIG_USER_ONLY)) + $(qom-obj-y) $(crypto-user-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 2b0793ecc9..dcba4429c8 100644 --- a/Makefile.objs +++ b/Makefile.objs @@ -25,7 +25,7 @@ block-obj-m =3D block/ # crypto-obj-y is code used by both qemu system emulation and qemu-img =20 crypto-obj-y =3D crypto/ -crypto-aes-obj-y =3D crypto/ +crypto-user-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 fdbe7c89f4..4ef4ce5996 100644 --- a/Makefile.target +++ b/Makefile.target @@ -180,7 +180,7 @@ dummy :=3D $(call unnest-vars,.., \ block-obj-m \ chardev-obj-y \ crypto-obj-y \ - crypto-aes-obj-y \ + crypto-user-obj-y \ qom-obj-y \ io-obj-y \ common-obj-y \ @@ -189,7 +189,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-user-obj-y) all-obj-$(CONFIG_SOFTMMU) +=3D $(crypto-obj-y) all-obj-$(CONFIG_SOFTMMU) +=3D $(io-obj-y) =20 diff --git a/configure b/configure index 571dd94ee2..54fa78c4dc 100755 --- a/configure +++ b/configure @@ -2792,8 +2792,7 @@ if test "$gnutls" !=3D "no"; then # At least ubuntu 18.04 ships only shared libraries. write_c_skeleton if compile_prog "" "$gnutls_libs" ; then - libs_softmmu=3D"$gnutls_libs $libs_softmmu" - libs_tools=3D"$gnutls_libs $libs_tools" + LIBS=3D"$gnutls_libs $LIBS" QEMU_CFLAGS=3D"$QEMU_CFLAGS $gnutls_cflags" pass=3D"yes" fi @@ -2864,8 +2863,7 @@ if test "$nettle" !=3D "no"; then # Link test to make sure the given libraries work (e.g for static). write_c_skeleton if compile_prog "" "$nettle_libs" ; then - libs_softmmu=3D"$nettle_libs $libs_softmmu" - libs_tools=3D"$nettle_libs $libs_tools" + LIBS=3D"$nettle_libs $LIBS" QEMU_CFLAGS=3D"$QEMU_CFLAGS $nettle_cflags" if test -z "$gcrypt"; then gcrypt=3D"no" @@ -2896,8 +2894,7 @@ if test "$gcrypt" !=3D "no"; then # Link test to make sure the given libraries work (e.g for static). write_c_skeleton if compile_prog "" "$gcrypt_libs" ; then - libs_softmmu=3D"$gcrypt_libs $libs_softmmu" - libs_tools=3D"$gcrypt_libs $libs_tools" + LIBS=3D"$gcrypt_libs $LIBS" QEMU_CFLAGS=3D"$QEMU_CFLAGS $gcrypt_cflags" pass=3D"yes" fi diff --git a/crypto/Makefile.objs b/crypto/Makefile.objs index 256c9aca1f..7fe2fa9da2 100644 --- a/crypto/Makefile.objs +++ b/crypto/Makefile.objs @@ -19,9 +19,10 @@ crypto-obj-y +=3D tlscredspsk.o crypto-obj-y +=3D tlscredsx509.o crypto-obj-y +=3D tlssession.o crypto-obj-y +=3D secret.o -crypto-obj-$(CONFIG_GCRYPT) +=3D random-gcrypt.o -crypto-obj-$(if $(CONFIG_GCRYPT),n,$(CONFIG_GNUTLS)) +=3D random-gnutls.o -crypto-obj-$(if $(CONFIG_GCRYPT),n,$(if $(CONFIG_GNUTLS),n,y)) +=3D random= -platform.o +crypto-rng-obj-$(CONFIG_GCRYPT) +=3D random-gcrypt.o +crypto-rng-obj-$(if $(CONFIG_GCRYPT),n,$(CONFIG_GNUTLS)) +=3D random-gnutl= s.o +crypto-rng-obj-$(if $(CONFIG_GCRYPT),n,$(if $(CONFIG_GNUTLS),n,y)) +=3D ra= ndom-platform.o +crypto-obj-y +=3D $(crypto-rng-obj-y) crypto-obj-y +=3D pbkdf.o crypto-obj-$(CONFIG_NETTLE) +=3D pbkdf-nettle.o crypto-obj-$(if $(CONFIG_NETTLE),n,$(CONFIG_GCRYPT)) +=3D pbkdf-gcrypt.o @@ -35,7 +36,7 @@ crypto-obj-y +=3D block.o crypto-obj-y +=3D block-qcow.o crypto-obj-y +=3D block-luks.o =20 -# Let the userspace emulators avoid linking gnutls/etc -crypto-aes-obj-y =3D aes.o +# Let the userspace emulators avoid linking stuff they won't use. +crypto-user-obj-y =3D aes.o $(crypto-rng-obj-y) init.o =20 stub-obj-y +=3D pbkdf-stub.o --=20 2.17.1 From nobody Wed May 1 22:23:38 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=1558553297; cv=none; d=zoho.com; s=zohoarc; b=jFpyedbHFU9vxpoiP8nzoO3KAAIFDvcirxU14xD7bYFWO9+JKlui85y1dWAwAOQDPIQJeLmZtRVrGA/wppKZm0/NEmrD32jF5xGVfoBqlMDYrFYdfDihVL35L73HfDhbYM2lTlVpUyMwwHU1f8M2fh6dWJsuUS8Ufke21xCgpd8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558553297; 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=KuH/scW1E0fYpNI7EiVs02T7rB6BLgAykY1tKu77bmaXcg89GBe80C6enWLGZ/8sfDBCmmOAcUAUydyEWQDaUOLBrMZQeX6HBN7pAMhtraK3Y0kfrxQiqNMSTRZLjdhrZ31pgRdJFuM+2L0vTe5SliKr/9FWnY818LicoQCAq20= 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 1558553297704545.5206508123879; Wed, 22 May 2019 12:28:17 -0700 (PDT) Received: from localhost ([127.0.0.1]:50128 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWuF-0003P8-Nt for importer@patchew.org; Wed, 22 May 2019 15:28:07 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35240) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWOr-0008P8-BW for qemu-devel@nongnu.org; Wed, 22 May 2019 14:55:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTWC8-00081S-Eh for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:33 -0400 Received: from mail-yw1-xc29.google.com ([2607:f8b0:4864:20::c29]:35728) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTWC8-00081D-8o for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:32 -0400 Received: by mail-yw1-xc29.google.com with SMTP id k128so1247876ywf.2 for ; Wed, 22 May 2019 11:42:32 -0700 (PDT) Received: from localhost.localdomain ([71.46.56.17]) by smtp.gmail.com with ESMTPSA id 206sm1299445ywq.74.2019.05.22.11.42.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 May 2019 11:42:30 -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=WqoBSRUTTGnpLM+sdJxTl9/3hxQssulEWF+W79mNBvMYMqcWZuIYbo0rmAqiUMlwOG 79hIZG9TUAIpN6S3PVWHtrEuAmgmnNzdaQhfYBmURM2ZAtKtfEuf9bFu8DpK/MBNpiM5 d9nzvej5A+Dk/WKjDK2Us/E5OkQZZIaY5VcQ2R+m1O9rhH//DmRk10OBTXmEVFq/r/vI gTKDDOXRiSR85+1nRpqC324Zr1b92Umjv986mx52tcPnf6vV4khqYNyiyLuj8Ug8VglR zAFS1DrYn9xpmLn3zo1zua5BcjuCmbo5CJJuPhM/LfEHNZuDIIKUSl6b+CoYcrhcFYcj ED7Q== 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=TyYVEsMboPyieAIQNWz8uMynB7ltamqjOhoMbT8w1AXomvObdzIkX/IExSZfJyqn0h pBbgiW5s+t98WJqhincv2Rir2UsCdkMLteCjdAk5W25EtIpXtJNQKvN8EMhzrPbHiDcN 0uj4YXWupfjzpKS9lbK57x5WXr+umtPxRu6WKVhhtZ3Uy1ukH+lBK3tvXJIbN2WcwDmj wtGRgKTAm4g/ZFJLqnsd0A29wFUZb+Vd0Ylys1P/kOqGJJQJtWC0VVW3Ag55lbLNhvlJ n0azSefn4Sls15e4+52osfjuEhfDAReTARcOZiSh/aZ2ZiuqFyFeK9xdJ24I8oegM651 S3Mg== X-Gm-Message-State: APjAAAV6+wjbirf2bagGl2hmmEZ7sVO9dMDYk7w9bkMh1VLJCkk7kyEk uKVPSDd7A5IEADqgVb65XAkg/knQ2Cc= X-Google-Smtp-Source: APXvYqykL065Hu7PERVtp4xqAIf62J/mHbBJTVYxSpQfgp6R/FlgNPv9kVpQlFug2umdfhGmJYDeHA== X-Received: by 2002:a81:b84:: with SMTP id 126mr41880660ywl.257.1558550551317; Wed, 22 May 2019 11:42:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 22 May 2019 14:42:04 -0400 Message-Id: <20190522184226.17871-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190522184226.17871-1-richard.henderson@linaro.org> References: <20190522184226.17871-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::c29 Subject: [Qemu-devel] [PULL 03/25] 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: peter.maydell@linaro.org 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 Acked-by: Daniel P. Berrang=C3=A9 Acked-by: Laurent Vivier --- 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 Wed May 1 22:23:38 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=1558553410; cv=none; d=zoho.com; s=zohoarc; b=gAkVAJSwuyVCQkbWLeSCBRwQCkJzndZtWGfJiumrCZzKw/5OcwaNcW23MSk2MLMGtG7rqdVmnOzAQoh6nQV7Xu0jvdUG0PEwLec1z5QFqdrCEwtoJ7KRt98gqgErKPSi3/T2Ne1qSeHyWdo2p36vt7isw6mLPGae9Soba+Eya7U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558553410; 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=LP5tOYXhh3Frx0W681pA2sUaGL0d1CTE3c15tgITnrK50u8H93CKYtEwMv6hQfZ+5Pz/5QwyuZB9SOo1XGUCosa91rpFw6DAsBvQZvkWvUsQ+Edx49RHmrRZzzDwRogtZ/59naOXKlRT0uDm5UmT0uJ+medQzUPGmQo/YohmgDo= 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 1558553410061189.8074777814029; Wed, 22 May 2019 12:30:10 -0700 (PDT) Received: from localhost ([127.0.0.1]:50150 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWw4-0004kA-SL for importer@patchew.org; Wed, 22 May 2019 15:30:00 -0400 Received: from eggs.gnu.org ([209.51.188.92]:34793) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWOr-00086d-Be for qemu-devel@nongnu.org; Wed, 22 May 2019 14:55:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTWC9-00082C-II for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:34 -0400 Received: from mail-yb1-xb43.google.com ([2607:f8b0:4864:20::b43]:33820) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTWC9-00081c-CR for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:33 -0400 Received: by mail-yb1-xb43.google.com with SMTP id v78so1266115ybv.1 for ; Wed, 22 May 2019 11:42:33 -0700 (PDT) Received: from localhost.localdomain ([71.46.56.17]) by smtp.gmail.com with ESMTPSA id 206sm1299445ywq.74.2019.05.22.11.42.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 May 2019 11:42:31 -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=C2fXklttaFB55rJ9U5Po24wtMKgUXJCFBv8eyRy82xHDen3Y67tB6R0FHjz+XIxhMf TVbBFlEUBGn1mwgOeIZL/Z5mWUeY6SXf3L2gSVrD2L4Gnp0/1Icf6W1+MExagrXiN/12 wU/NZ1W3Cc4ROgH8/iDeGkNrbYnZGzpRk49VISUf52ZbwxMuN0MZPTaFQFbZ1rxLi+DY XCrAIpwqUveEhfbZ/Oh9p/7EgU1UYTCUzQHAZGlkFvYKEj/MPZrnncqxTvn2/pPKEHks 5ZvNIjd5vcVHdRoyHQo9RB9bXUAnemWYvxIXTqQLn961ErKS79Sju/WZyruO9q3UaUK3 7sUA== 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=lEq42MIfoHqVnkhYviWu2BdIcbJrzk548BHCuxxRYEPMqhcB4kLrmiORDmYw3J3Uxp hbezfEl+xoIspqnCT9WtcyK0+Q2E+zsW5EHjuh4z14SARclsZZL57SYWiuTDgKqspsQC 6r24atuvEjciKoyQhvTwVBulwwG38J0yH/4l+nQ21ak/5Cf72WN2c2o4raYzMPGUa5xY xf/ed1sykS4yXRjtPbry+CtH2C4HM4PehgsfKWPZRqgjeKQI2WxgzJLiOmCbl/D16RjI Iz+YOMVlPwTdNvamqsNxxsh4t8mcn5UAvhbJthAE1AYY4mq7s9obK+NPz59E1T0NklfF 3dNQ== X-Gm-Message-State: APjAAAUgKOZU0xZscQUDRXzqWtIMnuila7MbAzKRWYqpDpy3T0vO1ESZ efMhX5awJpmM1CsczcG4vSbuekcBkEs= X-Google-Smtp-Source: APXvYqy8eEUipVxpaPl1CVfaByk2gkpzdFvmNdfkTtG9SGEsERhvwYj1QhIG3aPxTmZY0sCX2qh2jQ== X-Received: by 2002:a25:ef10:: with SMTP id g16mr10101072ybd.510.1558550552342; Wed, 22 May 2019 11:42:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 22 May 2019 14:42:05 -0400 Message-Id: <20190522184226.17871-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190522184226.17871-1-richard.henderson@linaro.org> References: <20190522184226.17871-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::b43 Subject: [Qemu-devel] [PULL 04/25] 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: peter.maydell@linaro.org 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 Acked-by: Daniel P. Berrang=C3=A9 Acked-by: Laurent Vivier --- 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 Wed May 1 22:23:38 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=1558552306; cv=none; d=zoho.com; s=zohoarc; b=KeuW08UFIyIYs5kKlYiISPzy717FCbwWprKJUEoiLe2JslzeU5l8EIXzboHPGrSgQhcB1nMxUn1sSHS4mQoogkVjEtrzunxNsfvcT7oc+bLiw+2A7JLVxTmyucySIqWIX4AHXmtqNoClDxWgGmqtU1Ti5M6qpCThfOcSwx7nB7Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558552306; 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=SuIvNWsWsrbC0MhZSzcsody6zaIUIswq+u6iwy7EMiW52H1ygUTlrNRXHPfmGYbFu2rpoiOIbFpSQkyPaJaAJ6xmVkyfRwqFVZ2CD/xjEz78cyNLbdJcqi0ebiXszbAeUUgLG9X7l/HwEg3pAjhZntT3UK96oQhzjLzq5iOxBEQ= 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 1558552306966350.6808302457156; Wed, 22 May 2019 12:11:46 -0700 (PDT) Received: from localhost ([127.0.0.1]:49834 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWdk-0005MB-PE for importer@patchew.org; Wed, 22 May 2019 15:11:04 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35158) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWOr-0008Lh-Ag for qemu-devel@nongnu.org; Wed, 22 May 2019 14:55:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTWCA-00082m-GE for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:35 -0400 Received: from mail-yb1-xb41.google.com ([2607:f8b0:4864:20::b41]:44893) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTWCA-00082T-9q for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:34 -0400 Received: by mail-yb1-xb41.google.com with SMTP id x187so1239402ybc.11 for ; Wed, 22 May 2019 11:42:34 -0700 (PDT) Received: from localhost.localdomain ([71.46.56.17]) by smtp.gmail.com with ESMTPSA id 206sm1299445ywq.74.2019.05.22.11.42.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 May 2019 11:42:32 -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=OBFpmPi9AWbdbtlYgTZidrE4QnXMu+xB9Qsjq6MUEiJotntcRpE6196p4t87OpGn+w tivMWHcZP1f/68eWfkTp0LXDzPcZJUyc09KvuhoG9+nyYzBW56wpJTlM6FJO9T2+0r4p FD+8m5+R4gaVVJ30i0UBAu1RGbdbEUErxX3b6QEPzX72VuARHtLrucetpKP3LpnXXOfj lZMnOJtEv17bB5VqpFK40bp9zNs7XONIKYOQKXB6NsMZM+6MJGC7Y+j8SC4vk6Yogrws zyRgs6+gEBExms0b+JgU5qHT1hV5Fx5HhS3j0Af+MhWUH8Xtp3tPv6Kx2CkdjK1tsQ/s RDKQ== 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=MnajBEt6gqhu4Fzxl5kO5YSoiNOzN4S4rmEZMqDOXkLwLs52CKFH8+SA8FQ1Un97y+ LsO9XpSzN2fCrLmPvKKcjM/YvEVqnn16nGSpYdwVXoTZiLspfNmz7fH8EcLgsVcsEwOD SIuzwa0cuZbSTw3qfxPGZ8Kixk4H3FNgR1PoKRUNm+IZjNkoQhDmrM/WtMzkxISDfvDo BqKFaDN2UnikFPE+RDqQ+8LjkXHVrNGf6MxdgwJI5SrL8l4U7c7plBCKWm0zspShYEOQ 2higDRMHC/Za5NHRmd2/8Bz31yaD1hVoDjOIcLW19iTTWDyuxGVtdR1O77hWMNcrUwyX Kwvg== X-Gm-Message-State: APjAAAVuYIqPWBjG59/+EWfRxaAfwlrSaZ8Qc0oKE/wjSM4oykWvW01+ Y4OzJMYQXSlfFy8Kg6KofCb+mLi+FSk= X-Google-Smtp-Source: APXvYqxHn/Nv6iZ1tAHwIaEOxekjuUslKbVcIy+HZvDliwPpijCsPY0RNTYLWmEMMTW6Gu+u34ixDQ== X-Received: by 2002:a25:abf3:: with SMTP id v106mr10653436ybi.123.1558550553422; Wed, 22 May 2019 11:42:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 22 May 2019 14:42:06 -0400 Message-Id: <20190522184226.17871-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190522184226.17871-1-richard.henderson@linaro.org> References: <20190522184226.17871-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::b41 Subject: [Qemu-devel] [PULL 05/25] 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: peter.maydell@linaro.org 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 Acked-by: Daniel P. Berrang=C3=A9 Acked-by: Laurent Vivier --- 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 Wed May 1 22:23:38 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=1558553180; cv=none; d=zoho.com; s=zohoarc; b=fNMGhIvnvxldB/UD0trrW7mMP0rgLYh1Q6zMZJZZTTAz56FELhQOvNUsEK8oCxnELTSb+DUewf7+cIogsqTrdU6YI9KMpMdxBXPSl88BIg1B6zt50CUsE9r6E54ZQh1/5GxjH1wI6pkD/eTH1NwTejJU7n1u54Pqc2mrfU7aTrI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558553180; 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=C5yUHyNINPBjASzQcl4pblPDsyyBX7i3Ae47r1N2nnw=; b=ZMWmnYYbi+NU+4z7g5WDhlCtY13HnUgZc5e6nL/OhOQUxRW/JdAzZEFbhrY6Gy9FWe5mqBbpe4YJbbP6k/kshhdcsfVru38G/+2Mh9s92DKtyphx4X87XgIRPagmYujVa2fWwCoQeQxhI0RKETtnu3pcpPSzbqah915xNDCIogs= 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 1558553180662699.5508453590434; Wed, 22 May 2019 12:26:20 -0700 (PDT) Received: from localhost ([127.0.0.1]:50098 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWsQ-0001sh-8u for importer@patchew.org; Wed, 22 May 2019 15:26:14 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35163) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWOr-0008Ln-AP for qemu-devel@nongnu.org; Wed, 22 May 2019 14:55:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTWCB-00083L-Mj for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:37 -0400 Received: from mail-yw1-xc2d.google.com ([2607:f8b0:4864:20::c2d]:44154) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTWCB-000831-Fw for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:35 -0400 Received: by mail-yw1-xc2d.google.com with SMTP id e74so1231708ywe.11 for ; Wed, 22 May 2019 11:42:35 -0700 (PDT) Received: from localhost.localdomain ([71.46.56.17]) by smtp.gmail.com with ESMTPSA id 206sm1299445ywq.74.2019.05.22.11.42.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 May 2019 11:42:33 -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=C5yUHyNINPBjASzQcl4pblPDsyyBX7i3Ae47r1N2nnw=; b=MO9ov4iCjqTqWRSLRa+MMwhyhfNR8J5CBshBSM5RXUHwcsALhRWX98E3nGvBo9ftIR pzkUS6p6DRHN0OOGS1rjffopEnc3uPbHnrmQuZn/lu/HFcK6fdkKn1CP4lWTtvsP8ISb nDOn25cLJMB9WWompAIarJ8XnHwuxKggFDnkRCMmrz9o6q/hrToATasb3VxYRz8choc8 G4EYHNBIyQ+5f1oDNWsAjJAw6yt7vSijU6jmdEi6nvw7EtG8GWYC2zFkGICS9cXI4B2g UrmI9Hfn+0F0aUZyE2ZndPZuAlhuDw2twcABIgo3wWssj/BsoPyW3kVr3dXMBtks+Yay y45g== 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=C5yUHyNINPBjASzQcl4pblPDsyyBX7i3Ae47r1N2nnw=; b=rD2uCK3OSdzIw0PggGYZl6yH0MzY2QeFmrx2P62X9i2rP5N+4STxmgGZvk1NV2cj3n Lw/0tHkqnPN/ECYponP+xSfs2iKun/WTg5LDS74ib0xi8wA9UBwHg+ckY3H916+/uEDu jgrc0VNFkTj0O+pPX82pReUF20R8di2s4LuD5fljxTbyjYVFg+P693X1CEch/lcP62jy /u6lOQCsI2UlvcVuot/VjmFe0hn1e+51LeWRvP1dxjGUGHVJMW2NOCQSAh1jWl37oWus TGc5j9kxQEaGd0xDfl2W030W45riGc+sTVluwv5HxVa3dbpkxXbAXQ+z1uz2/DfveTIJ 1/dg== X-Gm-Message-State: APjAAAXLpiFCsIPk4EbPZ20BtzHwc1A1lVqNtIwpKZEeEdWuBc9zbeoT nZqIwf+tGNi7uBeAN7fV3HwJewJ6JCI= X-Google-Smtp-Source: APXvYqwhdJetAXM6PCwdhzYNSGRxZVmZip0OVj2tBq2ddChQuUScEheq1Sx2eurnFoxGCBRzcweWRA== X-Received: by 2002:a81:7246:: with SMTP id n67mr15937514ywc.423.1558550554455; Wed, 22 May 2019 11:42:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 22 May 2019 14:42:07 -0400 Message-Id: <20190522184226.17871-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190522184226.17871-1-richard.henderson@linaro.org> References: <20190522184226.17871-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::c2d Subject: [Qemu-devel] [PULL 06/25] 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: peter.maydell@linaro.org 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 Acked-by: Daniel P. Berrang=C3=A9 Acked-by: Laurent Vivier --- 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 54fa78c4dc..f3526a5bca 100755 --- a/configure +++ b/configure @@ -5815,6 +5815,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 @@ -7204,7 +7218,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 Wed May 1 22:23:38 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=1558553043; cv=none; d=zoho.com; s=zohoarc; b=X9t9kI6/Uz96ut8af5Wie/cT0GUbT5w8Xig7Gv1fU0ecHs3Bg9oBjEXrCrugxkBBXehr7MNuYbiapS5U+Liw/4JbTQaXAmTzZ+5hY/cLY8QUAAmvS6bpFMmG3hItEaFiYVU9RA728E5rbceiWcKtuKGiRDazcR7zM4AQtoWe7zU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558553043; 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=S9AY5s289zHOaR2CwGmAh10QAyi804wH/4ytIEGftUUeVW17gEArMiKNnnk2gIQMolIifG3NK9jPjTvfqy5ZtmrNKKw/4+S4lz2bbIbXvonTehyidLPd27OasocWzM6njL6EK7vSF5FMStfh1l3Xe7R8KE18x4KcMzUvZLRt7vs= 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 1558553043189954.2723787003847; Wed, 22 May 2019 12:24:03 -0700 (PDT) Received: from localhost ([127.0.0.1]:50046 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWqD-0008W9-70 for importer@patchew.org; Wed, 22 May 2019 15:23:57 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35052) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWOr-0008Eq-8a for qemu-devel@nongnu.org; Wed, 22 May 2019 14:55:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTWCE-00084L-3I for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:39 -0400 Received: from mail-yb1-xb2b.google.com ([2607:f8b0:4864:20::b2b]:45668) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTWCD-00083b-Uk for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:38 -0400 Received: by mail-yb1-xb2b.google.com with SMTP id e128so1238772ybc.12 for ; Wed, 22 May 2019 11:42:36 -0700 (PDT) Received: from localhost.localdomain ([71.46.56.17]) by smtp.gmail.com with ESMTPSA id 206sm1299445ywq.74.2019.05.22.11.42.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 May 2019 11:42:35 -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=AdtUsywCFarbxNYqrewX5Po7UVveY81UBDxGa+6hX7qZjmyAQLpmsOAIiQ+/l3OcWo UzJ5vyffFccwB1+HbqZkdmX64Gn7T5DSajnAayzDOYi/MTcC9r3PH7QdlhsXPC+BRPa6 30wvqhT4MXq2lPg/bVrNscj+fQzZy2pnMs2z4Sz/wpfObmwKh0HLeJMqSX55bkwtGe1/ S7mdAtvoZ03aAunGwKwzTPl1CHvFAQSE31/gKOFBf1vTHwU2cxvShhoL0LGy9j/H+uLx 640Ie3MZPeX7OBCTElgC9CKlqo0CVRCawbszF4VRPubRIIcvP/uQiKm0W8dN28RRfyay KNaA== 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=q/D2I5C+CB7TT//syXKuQMP+OV6CR06f6Es1COEeLbRj70O2u9IpItukWKvE9MQcUZ /UJm+RlgloulytVk1ELn1x+V+jcFwixsrXjQUYwsPT8E9RcPqIBLOMTjIdSDzhB7sDng UlNFiTW1tP6CAB67PIR/IbvNwN7fmo48aKK0ygJcb47wS0G1mTklWItYp36erD7EMiGy FSf+oLxTiquhzVqp8U5nDTA2bigSltGiFwdjLk08ywK6D3j5/PWoY20ofg2Wu/w7LFMR pytkbO9T/GLhuJJgzfKAH8RO2dJhxPXvKV4qXuvz1Iq14Ck5u56K7Tz8jwuxKNB5nuQl 5fJw== X-Gm-Message-State: APjAAAU+0enkcwNSOFQqqpZerC7Ktr2xZF78e3HgWFq6N3zWeLK5+1/Z 3M4IBLlNbwWhJfmms7l8wyg/SsEee4M= X-Google-Smtp-Source: APXvYqyKXPfBnn0yk5jIpWn0FfodD8ggVjtRDjV7M9kjN0idlBo1PQcYeXTxq0xRC4hjyQ7eA4J1lA== X-Received: by 2002:a25:4041:: with SMTP id n62mr2455760yba.388.1558550555780; Wed, 22 May 2019 11:42:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 22 May 2019 14:42:08 -0400 Message-Id: <20190522184226.17871-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190522184226.17871-1-richard.henderson@linaro.org> References: <20190522184226.17871-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::b2b Subject: [Qemu-devel] [PULL 07/25] 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: peter.maydell@linaro.org 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 Acked-by: Daniel P. Berrang=C3=A9 Acked-by: Laurent Vivier --- 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 Wed May 1 22:23:38 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=1558553125; cv=none; d=zoho.com; s=zohoarc; b=WN3X/oHmQnOdSqYKpDmX2rnvWVmMUxugnSQz+6WirfbYKUAeJeRqpsDaBAEZ5O463txQShRUFe8AKz+2D5/Z2UFwrl170BFWrpIhLfYteWfVROeo1Wxqm2uhCxA3vSNXu5MO+bcze08UG+UzCc58cHuSRHKSBfvLfFC2RMJiLHQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558553125; 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=BLdVb52Afo23kVoeRzR0ORk8y/n47RVg+e0uXHwwzjWPxbVVsIqWY7iFjKZHps4nz9Tv9OQfghSGDw+tSeUwetXBixygvCj5epy8Q8/GegkB9X1HwcYxq9r1rUNG0oKwOqnygGzPBGFMpka/bm03zCAg34VSi4VglYwaRp3iKZQ= 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 1558553125574423.7700955240497; Wed, 22 May 2019 12:25:25 -0700 (PDT) Received: from localhost ([127.0.0.1]:50062 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWrT-00014e-Fg for importer@patchew.org; Wed, 22 May 2019 15:25:15 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35086) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWOr-0008Ga-9t for qemu-devel@nongnu.org; Wed, 22 May 2019 14:55:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTWCE-00084h-NJ for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:39 -0400 Received: from mail-yw1-xc42.google.com ([2607:f8b0:4864:20::c42]:44705) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTWCE-00084B-3Y for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:38 -0400 Received: by mail-yw1-xc42.google.com with SMTP id e74so1231751ywe.11 for ; Wed, 22 May 2019 11:42:38 -0700 (PDT) Received: from localhost.localdomain ([71.46.56.17]) by smtp.gmail.com with ESMTPSA id 206sm1299445ywq.74.2019.05.22.11.42.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 May 2019 11:42:36 -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=buz8zzBW8+fGmmxjgk6pFxcVeQ8mDCKNmPovFUaM5dBh/03FFMZjutDleauPoWTv/h mXNxnUnWPNz5+cVELkiJIume8PzXHMBxXFzV64XzAbeh/zWa5AIpQZv+g+8lTgsLV/Gi 5Fmb+blYFCyvDeiYLS3DVPGNB+E13l185tUTd+OZec6mij4suQ+JLUp8H84RRmWIDOYm j1Wef8H501WCFHlOyUeb5XQCizrHz/0wphr5Gxvk08qWPKM8dXYsJp9F7MNAm4hBE5iq nouCjgqzMxg6L+5BElqCvwHuvZH12nB0ZWp2IuZS2EyHXJjgKps2e2qCioX7oKoHQBJl 1ejQ== 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=MTXNrx1wqW//qUi7fzgyfPxY/HdlLlSw6Uo3Y9+YRor57Xa1IJ+ASrAqgKcGwD7jAi aM2eMTxKvMLYNHAfeEomhCPFbp6Hr1UcIEQoYUYGrP7EUrOdqYc/U8pKFFRyV0EDmcp0 e5EOaYUMkXJ08HgQCKg+FN+obMNjPcPMdgPwB++aSInujdBOG4w7XSIPxflNqw16Wij4 ehgCFAApDaW2lfMNnutAQabBIV04X3OswIHZoSHLfohQwTWCOrasQUFHYwoWJb8YlqAP knHqQElH5kosnGtQ+RsqLEuMmNTuqAg1X2VHvjKspBmOH5A6kIzfZw+zvPsKLztd7MEd iy/g== X-Gm-Message-State: APjAAAWqi6DvMslHa4By23f0eZNXcElNbJ1m5/cysITlLPFveCglA/Fw NoTMm6PUVZrMOT7K/f/bwv3a2ELxOFk= X-Google-Smtp-Source: APXvYqwualEZ2U5BPuj12JpELI6SlLXLIg4F0ivawGuksAtBsKA38pTHL2Oh3s+5qxKKcDkFIaq3vw== X-Received: by 2002:a0d:e584:: with SMTP id o126mr25630935ywe.81.1558550557014; Wed, 22 May 2019 11:42:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 22 May 2019 14:42:09 -0400 Message-Id: <20190522184226.17871-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190522184226.17871-1-richard.henderson@linaro.org> References: <20190522184226.17871-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::c42 Subject: [Qemu-devel] [PULL 08/25] 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: peter.maydell@linaro.org 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 Acked-by: Daniel P. Berrang=C3=A9 Acked-by: Laurent Vivier --- 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 Wed May 1 22:23:38 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=1558552076; cv=none; d=zoho.com; s=zohoarc; b=F5f5PdH/OIKOlvmv7gf7B9ZxzbCxx10HyUzf2y1L4jNuZGIowJcEM75PORQGKL9jariKbElD5oGLMjEJhY6FzAkqSptpxZFKG6g4VzfzmejpuRaXRqp/ruOEfS45Bmb6xvEAA1Dcr/91XUecQPJPHt/M4xeSemVmCvoxf3+ssJo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558552076; 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=be+BEfm46qs5lJ/ZDWANhHzidfYCBEjs7CJl/4zpSzWfY3805fqj4z+jtO8z8cMDmLJSZorrFf1StyvgKwU109A5dOVlrdWLkDTnKADDv2dDYqM/w2JrbNptfbhsbs9goGQ0OkDs30AkC1czCcxbaG46voFniike9loWdTxfYsg= 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 1558552076237148.24140233978392; Wed, 22 May 2019 12:07:56 -0700 (PDT) Received: from localhost ([127.0.0.1]:49802 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWae-0002yr-4X for importer@patchew.org; Wed, 22 May 2019 15:07:52 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35240) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWOp-0008P8-TZ for qemu-devel@nongnu.org; Wed, 22 May 2019 14:55:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTWCG-00085H-1R for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:41 -0400 Received: from mail-yb1-xb42.google.com ([2607:f8b0:4864:20::b42]:43335) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTWCE-00084Z-Rk for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:39 -0400 Received: by mail-yb1-xb42.google.com with SMTP id n145so1243674ybg.10 for ; Wed, 22 May 2019 11:42:38 -0700 (PDT) Received: from localhost.localdomain ([71.46.56.17]) by smtp.gmail.com with ESMTPSA id 206sm1299445ywq.74.2019.05.22.11.42.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 May 2019 11:42:37 -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=mPRksRwwbN/3/077MRePyAeJDUS6P0OM8kpNYghC9BDh8iqyPbzDpUz7JyfVjKF2r5 PzO+ThcVIwNj4vkL+MISSptc13xDpdNrnH2Kk5xY7t6PsX1/Tdq+NzArtxpU+ZREwmOO avkBpZoy2WjVvfrc3sBnqDBrq/IYeXnX/7CF+VUbqx/v99zpLgoi7q6mQkeNa4FwvJe3 H/oV4yTJVwuPrWIAH9HMV4cqfTVDyVuVQ87KG9GpLqSLiS3Xl0VUmd4ppqayRC/mZbmE seTaha8kwb6oqvh0s753pOFFXw3cBz5Yu3n9gQe0VtrCyVokCIPawT8yycTe+COfw1Bo NzoQ== 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=Po3FnGmjc5GL919yeILDl2C1RbBHnA7KU8hpxDvsNhwuCpqWBmGde1jyI9r5lU/bCg FHEMW+WQI+t9UsgcwIl8bV1RUwDznNXjyPdRFujCP2txM/uwDeZS11W+n1gIxCZen2Hn 71Dm0ecSi1fVelz1GUKqsEnfYCWZIn364cb3RQ/DA94TrkVwZNzkOgf8SxbY7HbHBcOP qvSYlBhbOxvn8UUO9+1gsMuR2pMl9KI/SkyN1ES80L+cMNY1Po0hDqQ9Gix67np62Uld UJL7KoCn1aoDSx7W3JtX+J33V5W52g9O9Nz4eppZZ++zBJeG0bT3FalmHc3FetquOgJh W41g== X-Gm-Message-State: APjAAAVWLJ4KhKY+ih1P066gnANICVEQiW19SlGf3jahUeTJCW98c/Mz AWyQJ2UpOFi+KIu674enXKnkeAjXcwU= X-Google-Smtp-Source: APXvYqy+CCBlIiTbLEMtyuGul9Jwf9V3w8aGGL+xmMK1hGZLmVRC8f/cnOcSzDv/SSrUV85yVQ2WcQ== X-Received: by 2002:a25:b18e:: with SMTP id h14mr8631012ybj.18.1558550557978; Wed, 22 May 2019 11:42:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 22 May 2019 14:42:10 -0400 Message-Id: <20190522184226.17871-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190522184226.17871-1-richard.henderson@linaro.org> References: <20190522184226.17871-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::b42 Subject: [Qemu-devel] [PULL 09/25] 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: peter.maydell@linaro.org 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 Acked-by: Daniel P. Berrang=C3=A9 Acked-by: Laurent Vivier --- 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 Wed May 1 22:23:38 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=1558552945; cv=none; d=zoho.com; s=zohoarc; b=fGjn1+b53GYSx9Z3E770jltL5rc2YhQu2NMUuAD5Ed/Jwuj9okBKeYKpKiVtg8RWt6ILmsqRiBZFMnNfjxPN8wPfQxk6iZW7zUUS7r5vSHB7A3IlaWxBL994qRkDihR4dzRLxU//VU9aRuaSz4LQOsEgP8ufbRBMqh7C/gCeuzc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558552945; 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=CQuM9g85cYijrUiWgEU1+4XYSMopwMm8ZYynSjfi7IpywQKB5KDAyQOqC/CMFArraqjwv3Jwnq+g9BSQQrmLcImAGOrPqplmLOUlFY/rXia7GCqQKrkCZZTJKqU0eBAiLXf4KZu73SQDq86IPUlEjnUGFj7Kj28pAe9iWmFdBa0= 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 1558552945629394.6645763733401; Wed, 22 May 2019 12:22:25 -0700 (PDT) Received: from localhost ([127.0.0.1]:50023 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWnu-0006Ip-04 for importer@patchew.org; Wed, 22 May 2019 15:21:34 -0400 Received: from eggs.gnu.org ([209.51.188.92]:34796) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWOp-00086f-Ql for qemu-devel@nongnu.org; Wed, 22 May 2019 14:55:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTWCH-00085r-QZ for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:43 -0400 Received: from mail-yw1-xc41.google.com ([2607:f8b0:4864:20::c41]:42440) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTWCG-000850-E5 for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:41 -0400 Received: by mail-yw1-xc41.google.com with SMTP id s5so1236681ywd.9 for ; Wed, 22 May 2019 11:42:39 -0700 (PDT) Received: from localhost.localdomain ([71.46.56.17]) by smtp.gmail.com with ESMTPSA id 206sm1299445ywq.74.2019.05.22.11.42.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 May 2019 11:42:38 -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=GWEK4DzLuwRLDSn4ojJp4HgoMS+aCUenx69mtZ9UAPaDFezyZWQQE5toJEykcVwt51 yb4+JhiRiPn09WrsTsq2aWtMlgGY4FBKiCLJSzz2SLvJHn2Rf0GPqlM1cjmBGb2+iMrC KIdjat/vwGiLX012TEJuiRmUM1eFngZuPeCrGupstP30HL8sgMiHZB223TkR4RIR9GDz 2qDSnzaqbRy1eRE+TGFRjecjGlsFGLr+a36b7akQceZyPtXf63+9Ip3aMkAXLOeEBXqG BS12ksV8qubrTFk11ugxerh4VuScgAFE1e7U97RlaXCnZLS1O9NemwCi2AHONfYDC53+ 1sRA== 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=ApNiOvRAbDlc23/pVOAeH7An7yPMKh1QOWcDQJILtObseTKgFEKMCYS5SRwrCTkzgf bhwJWRsCMGr5KtrCzJce27r7GxuwbdZZVAem7D3pAQCZLSAVTQkqOqYiQ1U15qjdBMp4 HDI38dyFa9zzMhSYRTx/IN4ZlLCKxEBlhwaq2EmeC0RV3cHorix/NeDX3DHIl3N+PEkJ 9JVMyhB2YkGyKuhcBawH21yhxxSxTXvmowG3EzIZRmMNP3rfkJv80M0Qeh/HawlVAxDm qMs/INPtnMhID8SZWFsKOq5L2fq+ASDwLsQ+GH3vpZgx+rapepwxzTC4kIMcrRiIf2c3 RNBg== X-Gm-Message-State: APjAAAV8TyjnK4G2CSumobOArcS7FTKV3OuqpM4JUrnOyMTwGOi8QXWr Y7ulZxckEVL+r3rFmbaTY6heAzE27NM= X-Google-Smtp-Source: APXvYqzgh8tBLMvw19x74u04CsxdzW/h1F2safSc6/csABuL4wMDuRbt+EtWh7KO4wS9/spLeL8m/Q== X-Received: by 2002:a0d:eb90:: with SMTP id u138mr22470698ywe.196.1558550559046; Wed, 22 May 2019 11:42:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 22 May 2019 14:42:11 -0400 Message-Id: <20190522184226.17871-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190522184226.17871-1-richard.henderson@linaro.org> References: <20190522184226.17871-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::c41 Subject: [Qemu-devel] [PULL 10/25] 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: peter.maydell@linaro.org 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 Acked-by: Daniel P. Berrang=C3=A9 Acked-by: Laurent Vivier --- 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 Wed May 1 22:23:38 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=1558552738; cv=none; d=zoho.com; s=zohoarc; b=ltiyJZJknVd5GHje5RuS+uu0KdtfiNDUfTz+Qhgrb5V2NP/ff9VWqawpzHCzTcYT4Sf9xFp1V9IN85j3YbCrE2RaoCGg8EA6awiL+6g25BbVQZpZVeH4q29mU3lPRA73AYfOUO6qA1gkWIhlwFh/AvgYCijIS6PLavuFOseRUA8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558552738; 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=ooMVwgAp+U7g50/jmMWyVcKo6lX9ghcSSdE6Ahl0IEA=; b=AhUhserdqR50UyZCxYQmI//ZCaMy1aO2tU2zT47Ok6vUZSlSo4mrBlh9CKGvkWd8ViX5nwaEZu/L0MTJgDvMobxN5SVV18Pq+3HKd9Bo8z2kU6zcBq3Qjb0dcxEy7fetfgcxZJHQ6invL3ARb7WlXiF9YimLqZXy+dHM6SUinqo= 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 1558552738851316.96059803073183; Wed, 22 May 2019 12:18:58 -0700 (PDT) Received: from localhost ([127.0.0.1]:49961 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWlF-0003Pl-CA for importer@patchew.org; Wed, 22 May 2019 15:18:49 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35158) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWOp-0008Lh-J4 for qemu-devel@nongnu.org; Wed, 22 May 2019 14:55:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTWCJ-00086c-Ok for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:45 -0400 Received: from mail-yb1-xb44.google.com ([2607:f8b0:4864:20::b44]:45287) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTWCH-00085b-QA for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:41 -0400 Received: by mail-yb1-xb44.google.com with SMTP id e128so1238846ybc.12 for ; Wed, 22 May 2019 11:42:40 -0700 (PDT) Received: from localhost.localdomain ([71.46.56.17]) by smtp.gmail.com with ESMTPSA id 206sm1299445ywq.74.2019.05.22.11.42.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 May 2019 11:42:39 -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=ooMVwgAp+U7g50/jmMWyVcKo6lX9ghcSSdE6Ahl0IEA=; b=Al34NMFFwEg5EiVi2K6FEftXDJw4RmI3y58uV7JjVoeXT2YQzGaA7a2sI8uHT1Ufab U2oeO515vhz01R8i+RXsiywWmqInSvMYEr9Tit10iSzdDgc94MbrDHL+XikJ2SAb+hlh 2CPBsFB5vjp+QvMc3C4DLB9l9llXgBXCD/EVmAEe3phGSPIXX4flxGM8sZKFMW2Ig6qC czN43c+45twodRlBzvQ/0MS8nFHyYcY9q5rGCtcRmgo4IxZrrKT+CBwVcZx3d5bv4LIG M0p7m/sdKYWZ2ESbM0ozrzRDMxjL/BLTa8/EfCPbCXljYKg/JKHCcnhAl27Dt7rtFg7c HbWA== 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=ooMVwgAp+U7g50/jmMWyVcKo6lX9ghcSSdE6Ahl0IEA=; b=ueE+2qgoAh83Cf1K6q9KFzJyAUBrLtEbp6TlIA16N122ASdhdZ/7Vp3jqcAJeQFiAx ic/EzkaKR/Yesoqt6jAnPCyfSv0jIPmBfcNfUeGZdBBnT8EEJWvABCP10ypOKRMEhvhc zQ+W75PqFDV2VTWjXv/cA/zhWMoQGKmW+s8Ay+X2/rXYSGmKZClXQmTWTZRj3Y3fk1Gi lGZFyDXftEwaVnWI1BA7uDE0hlRC/FmRc36F8NdlbaDq1bcmo8rfB358lkMGN+NCe5Xc yeOLBanTUhKdL8dPQsV5jtROoviQYdqzABjCwYlVUDFSgOtZcb9AxhHvNXJ0YdyvA+F6 3AdA== X-Gm-Message-State: APjAAAV8ixJmhiqH8fK/bzaaPf3SH3x6gwxED8GauLv5pgMJVD2upB5q 07OvqwTVLnY/PbqzH+hEOAx4G0H5YkY= X-Google-Smtp-Source: APXvYqyIZJVcRYU8Adotx95rMJayIEPS2/faSvVPEpjqinPgPrj6FWIf+amKSBXKiqStJ+Rm1gYqTA== X-Received: by 2002:a5b:c8e:: with SMTP id i14mr5679911ybq.12.1558550560144; Wed, 22 May 2019 11:42:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 22 May 2019 14:42:12 -0400 Message-Id: <20190522184226.17871-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190522184226.17871-1-richard.henderson@linaro.org> References: <20190522184226.17871-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::b44 Subject: [Qemu-devel] [PULL 11/25] 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: peter.maydell@linaro.org 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 Acked-by: Daniel P. Berrang=C3=A9 Acked-by: Laurent Vivier --- 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 32983f27c3..98e12d914c 100644 --- a/include/qom/cpu.h +++ b/include/qom/cpu.h @@ -375,6 +375,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 201144b162..5550bd7693 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 @@ -3349,6 +3350,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 5daa5a8fb0..7ae3373a00 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -3641,6 +3641,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 Wed May 1 22:23:38 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=1558552537; cv=none; d=zoho.com; s=zohoarc; b=bPUAhONtx9Fg3g+6mehJPSYLTeY2tZFHFxB983B7R6PZz52oeb0gwFBG6zAWuV+zZddwAFyXi1T5Rpz5cCYeyc4oq05dv20SldnGF59n0F6S2lclzlkgZFkmRC7ri2oVN4D7SOKPAJWOzsu9zXtCqDjUgdqQ7evnvfqXp9nqQ9E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558552537; 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=2ZOvSlCVstHsIxkY3rXu99Q7piqIwzQbJ9bkZ8lPHXs=; b=WjBcvlt2J1PDTgPVZ7KLRm3x1KAxqmyNKhFiFVkQfkV1j0fyPNsx/YjCPZ9lIjWrRs61M/xIJNkwNuoIkYiJpmJvj3hv5Qau16jDUDwud749ImALaleCOO4u7fBNLlinZ0j3AUCXRSscTYuaRpXKtrKzGoHMy8W3HvYFZG98Bv0= 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 1558552537078912.8436662238374; Wed, 22 May 2019 12:15:37 -0700 (PDT) Received: from localhost ([127.0.0.1]:49898 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWi2-0000Hc-0j for importer@patchew.org; Wed, 22 May 2019 15:15:30 -0400 Received: from eggs.gnu.org ([209.51.188.92]:34793) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWOp-00086d-7L for qemu-devel@nongnu.org; Wed, 22 May 2019 14:55:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTWCJ-000872-U9 for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:45 -0400 Received: from mail-yw1-xc44.google.com ([2607:f8b0:4864:20::c44]:41715) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTWCJ-00085w-PR for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:43 -0400 Received: by mail-yw1-xc44.google.com with SMTP id o65so1240637ywd.8 for ; Wed, 22 May 2019 11:42:42 -0700 (PDT) Received: from localhost.localdomain ([71.46.56.17]) by smtp.gmail.com with ESMTPSA id 206sm1299445ywq.74.2019.05.22.11.42.40 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 May 2019 11:42:40 -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=2ZOvSlCVstHsIxkY3rXu99Q7piqIwzQbJ9bkZ8lPHXs=; b=vNQKJAXQml5IIJRBkmHYQ+UeFXIUV8TEpCEEKufTkfAsYrCezZrlQQ7OyRa1ywZUzM DULL2P7etXtYfwO7wxNAeWIhNqoBx8xw5ADTYEMnOCGjetRckZ+wCLI5Br6CO+8cVSTH od6/2OafJLl6h3ALRkMVK8+LRH4z0KxRuGdCRat1DWIhWHv9VpJhUY7e9OAVtrqYNDXW CiSeYCggnbilXbk5l20ia7okflcyv2w+V4+8aQKAp/2unbX2XX4Yc8+T5IdMWUZPvri5 r8rQpEk2qSitgCvMmrma/w13tBWHJgTgiYKCAxJLO8g5jmDbjJPaSAqOVYRZIVAc6qkr Cu4Q== 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=2ZOvSlCVstHsIxkY3rXu99Q7piqIwzQbJ9bkZ8lPHXs=; b=T3o9tkhOKEkFN/mA96wTIbUQe4jQ9Q0RgNPvhrcu0NQmgAYuBxA/VgTh8Jaao5ULus jAiJJiekExUPfcwXounSTKWyBJQKqWIjvqE6sI3X3f/BZbbde3pebD5HDN3CkihrYF0c 0nWJArEbv8agDe98og4xU0GKdfDnjmQ+ROgmANnga1vjhpqrhqWGVuuKoUpbBEUcQ6Ko 9SP6ZY71tZETuB12N92rBjjUG2mFy9yCqtXrzq7dh22/fXell2RcV9eZx8CDBBqbi0MI YvK+ilqKJZwZapDO/fIyaQZlRtHNky3kmSMlFz8VW4PlvVNhYD83EoXMPrz50jutrLI4 j1tA== X-Gm-Message-State: APjAAAXG8JV5EhXqZTE//gyrNzQa7UOz7IQEpbvOKoVl1wkH6oTaeab6 dvUy2b0EuipygzueXVsZCrOAFO93fKQ= X-Google-Smtp-Source: APXvYqxV99IxULJ3fzKB+PmFJoYxFkyF3tbtcFqJfC9Rs+BzZwVoGOb/riw9pVZPk5v0SoK/ILSngg== X-Received: by 2002:a81:9294:: with SMTP id j142mr15313237ywg.157.1558550561235; Wed, 22 May 2019 11:42:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 22 May 2019 14:42:13 -0400 Message-Id: <20190522184226.17871-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190522184226.17871-1-richard.henderson@linaro.org> References: <20190522184226.17871-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::c44 Subject: [Qemu-devel] [PULL 12/25] 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: peter.maydell@linaro.org 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 Acked-by: Daniel P. Berrang=C3=A9 Acked-by: Laurent Vivier --- 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 efa3ec2837..f3ea9cac21 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 Wed May 1 22:23:38 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=1558551907; cv=none; d=zoho.com; s=zohoarc; b=E5Lwl4DZcg37na/MEy/7Hb1RRxLKoa47Z1WltaRYcAvajBZAm4P4KJeuCojnENN+KyPTwxRhRpZdo8b8wukW6BNBHWyc62ouVoZGoJTz3gaK3Ty5BVyxfvi/Vn8FEEoPXhDdpv1FqNr0dzlybLvWbbvdVr4UbeNeBo3OP+dFS60= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558551907; 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=XXhAPtYvtMlhkNiiH6cZEQQTlmdpOKHdKg1FRFOG4Is=; b=X/+jQKlQhdeWTnJPrLsKDTc9dfJDquc/nuyrasnpPrsdozQ6IE536F8LDAlndnbUpWepxjjIMwPKKjjHvOj0ozjULnd58mXdIYO3UdAnLsw8M9zCexyMLEOhpLus5t2Zn16HWQRLjohWJYiLbUG/tpH6oPztaVGs7mSo5Gt887w= 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 1558551907441783.76119684961; Wed, 22 May 2019 12:05:07 -0700 (PDT) Received: from localhost ([127.0.0.1]:49744 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWXP-00007W-1z for importer@patchew.org; Wed, 22 May 2019 15:04:31 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35163) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWOp-0008Ln-6q for qemu-devel@nongnu.org; Wed, 22 May 2019 14:55:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTWCJ-00086w-TM for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:45 -0400 Received: from mail-yb1-xb41.google.com ([2607:f8b0:4864:20::b41]:38879) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTWCJ-00086K-P4 for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:43 -0400 Received: by mail-yb1-xb41.google.com with SMTP id x7so1256969ybg.5 for ; Wed, 22 May 2019 11:42:43 -0700 (PDT) Received: from localhost.localdomain ([71.46.56.17]) by smtp.gmail.com with ESMTPSA id 206sm1299445ywq.74.2019.05.22.11.42.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 May 2019 11:42:41 -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=XXhAPtYvtMlhkNiiH6cZEQQTlmdpOKHdKg1FRFOG4Is=; b=dvoJpqtsvIHw/G5jCKu4zDmr94LIm25PGcgVGME+GVWJJwUFHZbmE0WZVi5vWE2hJr bJMpWvPhU+X1OBBmyx4dL0/kONrpGaHE4IpoQDC5DzVAB8Q7MVOOXRSPLNUtIGoPIS9x 2TdKAdFxIFt2hySoIodgi3W5s+3ce3tb5GZJhXAz2eQG9+l6VPzF07sFnzxpZUC9TVQx upow7mqruQfrvfcO/+DEfUEvxSJTjNbsFQV5r3+uZFvLSM2cgWWwmdiwt46bvXHDByeY zEd6WRFBcig6J/8REHZ6ksDHji0r/8aiKS5ZQuVkfNi9uNXRvThGIyAxhHe4oqv/Hmsg r1lg== 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=XXhAPtYvtMlhkNiiH6cZEQQTlmdpOKHdKg1FRFOG4Is=; b=D4eoxiDKNauOcUyDouDupJ9Us3rtzaCeJTYvqG0BIRwjFFl4hMMMijhRQC9yfsWJ7M OwYncX+aCroE2P2fMcxTJmF+OcMcP8nnUb8FV8/GTsiLDHLqM036G4veiPuxJIwFZSOq leanezmPvnIBauqJfkTL0yBmwRHTaMaEniQBw1yYmSIOyKFLg8niZwenI2JmkG95e65S OhQFlkTXM4OkOAWEqdQUtRjNnuWlNb3ZTIbkTWcOC2xRwiEDHwsn3BJL6kMTuKZPH3sp m+wYnbPZHQ/+DkuOHEKsiWTpstosTmgV5SfmXyLt3cdpBQn1/LeoFi+uLhYWZFkfYoCZ AxDg== X-Gm-Message-State: APjAAAUQIv8gaZf10lUpC3wZljasMqxYVVRKOyHqPHsRwk7awAPhX+o/ 6jKCXhG/lfblyPTh1W1/EtEW0SNDOj8= X-Google-Smtp-Source: APXvYqwDnvVQ8bYX3BVr59Ijkh8x2sBt36x4cnLkMHSGWkueUq+OcZJhjIqmLpRq1c3a2UOTk82HyQ== X-Received: by 2002:a25:8109:: with SMTP id o9mr11702248ybk.132.1558550562385; Wed, 22 May 2019 11:42:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 22 May 2019 14:42:14 -0400 Message-Id: <20190522184226.17871-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190522184226.17871-1-richard.henderson@linaro.org> References: <20190522184226.17871-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::b41 Subject: [Qemu-devel] [PULL 13/25] linux-user: Call qcrypto_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: peter.maydell@linaro.org 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 crypto subsystem for random numbers. Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson Acked-by: Daniel P. Berrang=C3=A9 Acked-by: Laurent Vivier --- 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..66c909a1a6 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/init.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_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 Wed May 1 22:23:38 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=1558551657; cv=none; d=zoho.com; s=zohoarc; b=awK93Fx0r+tYWlQXdUiQVqU85oIOLK9j/HyfUxa3wsoyCKtDhmpw0+7UL1r/RbkEP8+Y/gL4VXGZis62VbAzRGlGocN2stUkU6WF1+S59I5tP7Myq8opQ7PLsBaPPoLEm9MugpRBgtMmGHldFSjde+/CtSr02HKq0DgB2WWLdsY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558551657; 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=kUnjFkgbEPYC+htbI3HzcRUbQwiPNCYDDeVzWKXKlAOMWiMfOI/Bx1Zu/9lcg5lFHUPodjEGrf1G/GsUx722y4Zvd54bCtQSy4cVcUk/XkPRAW4ZNYfKfAb39eHOOboiEW7VX0WDpJRMx7X2GAHsE1ywcxUmD8LS4TyHXIEG46A= 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 1558551657308166.07124354637506; Wed, 22 May 2019 12:00:57 -0700 (PDT) Received: from localhost ([127.0.0.1]:49693 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWTq-00049S-7w for importer@patchew.org; Wed, 22 May 2019 15:00:50 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35052) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWOo-0008Eq-TQ for qemu-devel@nongnu.org; Wed, 22 May 2019 14:55:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTWCL-00087x-Rv for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:47 -0400 Received: from mail-yb1-xb42.google.com ([2607:f8b0:4864:20::b42]:39835) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTWCK-000879-61 for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:45 -0400 Received: by mail-yb1-xb42.google.com with SMTP id a3so1256401ybr.6 for ; Wed, 22 May 2019 11:42:44 -0700 (PDT) Received: from localhost.localdomain ([71.46.56.17]) by smtp.gmail.com with ESMTPSA id 206sm1299445ywq.74.2019.05.22.11.42.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 May 2019 11:42:42 -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=wlPqZaOb4ijRuE3yZISM8x6gUnqRkZE2hXEFLBmosSPC4Sc6e8SlftA3Gxpay2eFzt 2ZHnDRIwfk+IgqhK2Q0Art2CCvn5AyryHoloPKjpOgkxNGEVNvwfiPyHUYI14k1l4zzM Iz1O3itt/XXnj863xOesyE+WxpmYGC7H1JiPOHQzxkVL+ZGJzGSl+Oiw0I/RyaziphQh c2qsAT0Ucd3mMkF3FaX869tLLn9q0Xw3v5N3QdEzwYz8oOPNX7jMGSZm2dP7npMMh+7G lSU2/BVLVYtjhET4vedF1/9SeO6P8JgtDqqsu/q0jm5y7bGZVWuZYs61YNqaCr+xX1jM i5Mw== 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=e7q6aa3kV+v94R67+xfzI0GPEABQ7b0LFL9Xk9XJz3mCQ2IhOdpat6kN8fTOuj2sF7 RrkaBnlhxqVqkz3E2Xc/aO3jGbJPo2O5F8619t7EaXvVUt9Sq6jD/Tk6xnXaHCCHrZhT DfOABkplF1Zz1dWcXIr3rXP1WS5DN8da8VGcNDsJi0kPpLMSLAouRYzCuVrgIeMi5ca4 bWvOY9ADqpYSd59Q1yEj/mBLSxfovB2ekTQkYaJBQr9itQ/2HBHXt0HhlcCUaNQczzpS ydGTnnKJrdjtGvsgGH5HLvYGBtDDmtFwbrUsEGcPb82fTwNn2jZEMlarGwj56MYNH1pO RQ8A== X-Gm-Message-State: APjAAAWV9L/zQXMPB/6B5QQg7o/uAI+dR9fRTzxHscVM8TFn1C9riEhM EwTGFrKXWVQzLznUUJgaYftBjjdv/A8= X-Google-Smtp-Source: APXvYqyYeHooBtpFbcKWuQcPTtLawP+2cozRgH+uBadWDejge/xGBI5E+tg8XuSVtXNUyB6D/N0Bmg== X-Received: by 2002:a25:2d42:: with SMTP id s2mr16062056ybe.476.1558550563421; Wed, 22 May 2019 11:42:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 22 May 2019 14:42:15 -0400 Message-Id: <20190522184226.17871-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190522184226.17871-1-richard.henderson@linaro.org> References: <20190522184226.17871-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::b42 Subject: [Qemu-devel] [PULL 14/25] 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: peter.maydell@linaro.org 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 Acked-by: Daniel P. Berrang=C3=A9 Acked-by: Laurent Vivier --- 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 Wed May 1 22:23:38 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=1558552651; cv=none; d=zoho.com; s=zohoarc; b=TLmrHzYJ7TMgyIBtE1A+qom8kXhScRpAmuGQusATVAy/Katr2YUd25RLBGAjWoRZc0cqbwWTVI1UqjWtv5odEi5GFETJmFmKC6XXOYDhBomAJp6bZaoMH59TyG924v86VGn61LsfmHbJJmADhMe0gDEjj4KMZsFGq4DWXmxnkAU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558552651; 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=e2SNlmxHFtsdM0b0itsXkBL9sAk67p5UPbLq4CDfjKQ=; b=TpKk5z9vrfpd4ArJbkMi1eUGLslhoENreBgVN2A5rhma0saLrZ2ED/JWFPefRg9LZYoc8A7Vn5bGCOJeNxwb4yHWAtKqJwfOk54+lFkKrltQ0UIYxc10/uk2VWqJHVI8Gghwg3u8pMwCP7ejWN/UWMxONQRbfNOxGVJZGeuAN4A= 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 1558552651216929.2391787369313; Wed, 22 May 2019 12:17:31 -0700 (PDT) Received: from localhost ([127.0.0.1]:49956 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWjq-0001sd-3C for importer@patchew.org; Wed, 22 May 2019 15:17:22 -0400 Received: from eggs.gnu.org ([209.51.188.92]:34796) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWOo-00086f-DR for qemu-devel@nongnu.org; Wed, 22 May 2019 14:55:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTWCN-00089H-SX for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:49 -0400 Received: from mail-yw1-xc43.google.com ([2607:f8b0:4864:20::c43]:46556) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTWCN-00087Q-26 for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:47 -0400 Received: by mail-yw1-xc43.google.com with SMTP id a130so1226205ywe.13 for ; Wed, 22 May 2019 11:42:45 -0700 (PDT) Received: from localhost.localdomain ([71.46.56.17]) by smtp.gmail.com with ESMTPSA id 206sm1299445ywq.74.2019.05.22.11.42.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 May 2019 11:42:43 -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=e2SNlmxHFtsdM0b0itsXkBL9sAk67p5UPbLq4CDfjKQ=; b=nAmWZDxBw1LBKfn1t5DLJXcQyC1eJezA6t27t6jn6XshhMWmiUp9BUU/7eG8JDku6h AUk4ejyCNobPPEgPhuNIALlf8Arf9CS+DLsTB+JlCZEqeFbZu7V2zj6OzvEujqeFsbHU 5nr5lxRPYIdSSCHEs8wsNEwUn7V2bq/vrTf2SjmDxGubRnsTbBrovjCtBOjcDjtlK0ZP HZ/ve94BmBU3Vo+oyOv9bo+IO5gBNh8YsrnZUXyir6qWc58snKQCNseAH+AFBZP64vRI wLb9pdGUaisrCP2y8w9z9772GtZHZaUbou2L9Ywc18np6jHXdKg0ebOmTa6SLz6WPz2w Ps3A== 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=e2SNlmxHFtsdM0b0itsXkBL9sAk67p5UPbLq4CDfjKQ=; b=pmZ7AXyvcm55p9Msyf4SxrsO/TmO812eahAjaC9KON0tXt3iMRygu2Hu7SeWsfXfem ZBulJ0nLaaeooKcZs3RZ6nFdVu/XfdWz9xk+QzvdQQeeE/cTfmJ+tGhET20OY1VsuTGo EiiGX9f5iCa12/2vaqj3vb7Y1p/+S4gAdqVLs6fRPrXhR8FmDugWkbBUnNsr/ITIMCrZ Q/Iqb75evHR7UmhDlvANto8mzYVyGIF+QEc7/ifOtTH9elXChWbh8kyziim6Aaudqp8n qQ0OVcMGxuPy86OighrIg7Cl0KFF49rxPxDzztJ4CO7QLWBYJ41SEClfmIM2PPVWyihu 6J4Q== X-Gm-Message-State: APjAAAWtWvcNCT8vjj4nGAgplCq5qxh6ObX561lrBbxUwuY2apY2maLb oAA4fEccUToaTRxRq1tOP2yw6pxvh1Y= X-Google-Smtp-Source: APXvYqwjY/ezg2aPRpLYHVFN/38Baxz68lemdBCbv+LuWrDxWP+IL8C+hihHeGWheWNBqpDVh6I1Rg== X-Received: by 2002:a81:6a03:: with SMTP id f3mr28238704ywc.169.1558550564394; Wed, 22 May 2019 11:42:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 22 May 2019 14:42:16 -0400 Message-Id: <20190522184226.17871-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190522184226.17871-1-richard.henderson@linaro.org> References: <20190522184226.17871-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::c43 Subject: [Qemu-devel] [PULL 15/25] 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: peter.maydell@linaro.org 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 Acked-by: Daniel P. Berrang=C3=A9 Acked-by: Laurent Vivier --- 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 f3ea9cac21..72e43b517a 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 Wed May 1 22:23:38 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=1558552834; cv=none; d=zoho.com; s=zohoarc; b=eeQHSPmC3AOdpa5xAJO9B0kqgTeJ7xxMNOSGy40SjV4i1+yr1wnKC8ocUtkAY9AIlznpFYewBjo3pJFb/FU2PbEhhiog+Y3TkHqhoRwiouvWdD3YW5gWl5dXf9hgTTV4WpyrrmXPmBH70q9SPJ7+eI+3AeicwFNhNPpVGiR6NKk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558552834; 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=cAffAFBxa4y/VVbarNUiRFSP9To260Z9zDP/Ls36OfI=; b=ojO5yurFkXob1kTJR8gWEJHHs/lYmvvrHliaSU6vegiBG7kpiRaJlVyvaf9JbSOPwn4R+KEtObryrlzpkoRiWVvsbhEwhJKFPnAdIJvGpRd05bj1Hdwqm3+k8TabUZGUTJrciY+sgKGJElaOaOynfySzHc+GWaYWhq8yEyUwLw4= 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 155855283452480.47049859522804; Wed, 22 May 2019 12:20:34 -0700 (PDT) Received: from localhost ([127.0.0.1]:49989 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWmp-0005E6-J1 for importer@patchew.org; Wed, 22 May 2019 15:20:27 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35240) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWOo-0008P8-Oe for qemu-devel@nongnu.org; Wed, 22 May 2019 14:55:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTWCN-00089P-Uy for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:49 -0400 Received: from mail-yw1-xc2f.google.com ([2607:f8b0:4864:20::c2f]:35734) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTWCN-00088A-PY for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:47 -0400 Received: by mail-yw1-xc2f.google.com with SMTP id k128so1248154ywf.2 for ; Wed, 22 May 2019 11:42:46 -0700 (PDT) Received: from localhost.localdomain ([71.46.56.17]) by smtp.gmail.com with ESMTPSA id 206sm1299445ywq.74.2019.05.22.11.42.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 May 2019 11:42:44 -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=cAffAFBxa4y/VVbarNUiRFSP9To260Z9zDP/Ls36OfI=; b=aFbsH48F39Xybci721A/f/XujFCOPwXRHQJY0y83RsgL3CsRY7y4Bx5W3NWKKmdiVE 7JaMgeXYGtwj1ue/MlqLlofh/eyF7gyc6z2jnPl2mtzHJB0Z4DQh98S9iqRHM/dYcINP JZVXM+YykQwCEap5W59L4mlv3bHTP7Lh8WbfVir/o+nGvNyIRFMJulCbS1wba9DUFJVZ EB3uryMoGvrUmUGarf7Kec+z8V86Z65zkc3/rmplPZyI3o0LGEoo+bK7P91hvwk13Pjj RnQ7D9SB94vC2arWx0AiOjKHMH3G/W0M+vzDEYhf+y7y6bbj1GMMDDcM4UCG9UhoCedk lp5Q== 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=cAffAFBxa4y/VVbarNUiRFSP9To260Z9zDP/Ls36OfI=; b=HvZ/UmBcRyp95HvExuGZpTu48HuCBRfUZS0Psf5WYziJ1njrvLA60Tj67IR6VWbSMh c+Rkn8M8p/7xZuhcwtYch0qNbzpBs5/VydeTrNTkcRDt+JP5/gRJsvnOY95VIB0UeAqS KvdhLHv5QPo7A24DoELIeL7HvAkUxPrhmnc5udVbAtGOzTt2GoLuYxvGob3+Kto3xjmc 5yXiy5Pf+3sVhVtXmuQ6lvvO5mt914t7hUYN14eTwFWyEUC+6BbubnstpkhseLr0LkvG mHGtQdM6M5xeyOVoNuRoSUcxNyh0zaQespAAXV1pFRUdzIS+TL1euymrSY6JH8+kMW21 SCOg== X-Gm-Message-State: APjAAAX+A+dXpuHlOn1IFNwbfFyiH2+m0mvhGKGwrKnmHKPWy/QkwwqF f3uHvtnZddTwFsQM9SvIVEZz1Bsbnxk= X-Google-Smtp-Source: APXvYqzQCWwDX0yPSCgUV5E9l+Pn+Xh1qf4kyDMumN5NHKKnWpq+2BioX7KhuSnVV8oNzLltSMTCWg== X-Received: by 2002:a0d:dbc1:: with SMTP id d184mr18034660ywe.18.1558550565413; Wed, 22 May 2019 11:42:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 22 May 2019 14:42:17 -0400 Message-Id: <20190522184226.17871-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190522184226.17871-1-richard.henderson@linaro.org> References: <20190522184226.17871-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::c2f Subject: [Qemu-devel] [PULL 16/25] 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: peter.maydell@linaro.org 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 Acked-by: Daniel P. Berrang=C3=A9 Acked-by: Laurent Vivier --- linux-user/main.c | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/linux-user/main.c b/linux-user/main.c index 66c909a1a6..689bcf436d 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_init(&err); --=20 2.17.1 From nobody Wed May 1 22:23:38 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=1558552985; cv=none; d=zoho.com; s=zohoarc; b=URTgGG222PrQMS80srfxnNwtWGOgEYsXL2P4mD1+pSkxBTOnUI9JnUDp8aSho01o9Rdr2lVp57dOktUtqN3Ne/50s8Xd9Qa13fHfFLDJfHl/2iLG+fvga98ESdURXW4flWJUvf+WPRTkfEdlevLrT7LxP7MJMOW9Eim6HhfLZrw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558552985; 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=KRf63HC6QN6miM8Uh8Y9iY8qOYYRUA5Tur7/06OHpbSvMeErkoi+IZmEQTZdk00ttnhIomYBWdxmBNdkWJ0m/apLUTQWX7vAiWtRg6ZUd84TNxok8Uju5LH2wz+kAYCGMOQOvi8qhd+CzEfN95Giy6DqWRxisQD5E/f5qqR1Gv8= 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 1558552985137760.4978290865164; Wed, 22 May 2019 12:23:05 -0700 (PDT) Received: from localhost ([127.0.0.1]:50040 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWpG-0007n4-04 for importer@patchew.org; Wed, 22 May 2019 15:22:58 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35086) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWOo-0008Ga-QJ for qemu-devel@nongnu.org; Wed, 22 May 2019 14:55:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTWCN-00089U-Vl for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:49 -0400 Received: from mail-yb1-xb44.google.com ([2607:f8b0:4864:20::b44]:35241) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTWCN-00088Q-Qi for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:47 -0400 Received: by mail-yb1-xb44.google.com with SMTP id s69so1085143ybi.2 for ; Wed, 22 May 2019 11:42:47 -0700 (PDT) Received: from localhost.localdomain ([71.46.56.17]) by smtp.gmail.com with ESMTPSA id 206sm1299445ywq.74.2019.05.22.11.42.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 May 2019 11:42:45 -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=B/PcVJ5JaoLFNLP3h/Y5MLrwQgrFOMJz4Nle0d731qT/PhTmK4OHsMjnEH3BY8zA+U xtiaTZU8swftv8jVV9AXxlY4xxMJEczk2CJf7s8VhSkRU4uuXxnUSE+8T7UaoBivxq2q RESa/ZuGE7xK+49GUAbv5u92GRVL+FS2ANCCHO2RrE62MRkGBsshub+9rINGYC1NmYEL iD2a0nrkNHO46kzsLqk+oNDdMIZdb0g1hGsSq6lsOBJCi2R07691mMRlg1ghxpkr5Vc5 FrwEfZUKQDUm9IMBq1Nc6fsPesZ/btYu8+MNq28dR0hx47T2rvYxDzPFLYEJXilqmrfe pRCg== 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=Rb7OjTBVOpljbu2yPJEsu8eJ07XUUZTrvk9YDioNNj91M9P2bM1ND3/F4YkmX5Qd2D xYVw9Y+EQu+FBBS/f9RCaWzvhkEFAUbJ2TdjlYaEFo1yyz4pDjrBLZ0JEzYQgRjHgoE4 c9NC43rwNWnlGdVutyO2HHAqa44IkOG5oYU549i8c8w/1gImyqCqLqOLo5cV5tZefHqf JXVdqkbfaaFvO478/ocwF+rGndI96NV4XJLbRXY9XnmwEXTZcSswBL20EI0TXiws71sg It7P9VyFbkK6QT0A9BdjksR78q0YtTKhhmlUtwSPtY8A4/7a0WUSuyEBjxJ52cKlkhfg 0MGg== X-Gm-Message-State: APjAAAXoMiBb9XmG92txaCoq9WAl+/ppAGab3ZPm+UOs14y4/0uF3cYS qgujCTMum7rv4BxoWEe9oRewHmXvSvo= X-Google-Smtp-Source: APXvYqz0C28LmVIKf8wvi/NNmWioaPE9eW+FGe61d+AcAE+ZlEzG2Qshe/kw2CE4GRBAngjyYe/W2Q== X-Received: by 2002:a25:7502:: with SMTP id q2mr22098191ybc.31.1558550566459; Wed, 22 May 2019 11:42:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 22 May 2019 14:42:18 -0400 Message-Id: <20190522184226.17871-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190522184226.17871-1-richard.henderson@linaro.org> References: <20190522184226.17871-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::b44 Subject: [Qemu-devel] [PULL 17/25] 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: peter.maydell@linaro.org 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 Acked-by: Daniel P. Berrang=C3=A9 Acked-by: Laurent Vivier --- 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 Wed May 1 22:23:38 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=1558552078; cv=none; d=zoho.com; s=zohoarc; b=amebQAoI3PGIxuOS0zLirLrsiCKF3PbCuHy/QPq+YwI20Aw5BNkeMqyA2P2L/ZQjCwXv58Pqcaq9LOEOJOiWfqW52ZfC3xa78pxh7fsf1MFYXj0c0KksU46DYfhewR+2G70qXn+IP+lI/hbbaIUt8UM0SJ2NFvGsmAKE7nfrhuc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558552078; 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=Ln2gbdFEasiavGcqtAoc92obFqAe/BGkleV2MFGPgzuJzXkM7OoSSjS6heGImOqJBFLf3bz4lbDWLzAA0TMOqCbgE47iP7Be2lLnptIW12BXmNy1vRacHXDmW8k6w86JhQYe/YjIyqXkVRaOrXUkhbCodL0dtTj9elU81RrhOf8= 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 1558552078232139.54132749664075; Wed, 22 May 2019 12:07:58 -0700 (PDT) Received: from localhost ([127.0.0.1]:49804 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWag-000323-3n for importer@patchew.org; Wed, 22 May 2019 15:07:54 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35158) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWOo-0008Lh-9x for qemu-devel@nongnu.org; Wed, 22 May 2019 14:55:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTWCQ-0008Al-0d for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:52 -0400 Received: from mail-yw1-xc44.google.com ([2607:f8b0:4864:20::c44]:39304) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTWCO-00089d-8E for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:49 -0400 Received: by mail-yw1-xc44.google.com with SMTP id w21so1241570ywd.6 for ; Wed, 22 May 2019 11:42:48 -0700 (PDT) Received: from localhost.localdomain ([71.46.56.17]) by smtp.gmail.com with ESMTPSA id 206sm1299445ywq.74.2019.05.22.11.42.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 May 2019 11:42:46 -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=I/RgZIqw0PlT8WEjXXx/SNicpUQAAw/6516CBgMzR6eXFNR6Kf8kKEOfp8J/smmNnF NYg0VFjZqE7YnqcGyMrYeaQnIQQSZN2I3LKLyVTjSph6ojnD66TUsunKXwVF8FPcCcUf tvEjcIPRZ1kDI1WZXMFSb+v+lJ6HipC9sCtCrfKUT1nEJgrMjPhUuFpihrc3BnECxHFH f+JkEFKaF4AmwjWEw7LEaRZ6JCyWjlwPo8/QpZ993o1u8qpXE05I7p21HO02psxA9Ep0 Jz3OlFzAfnW2ITvFDk/sJTYDfgFPkJDc+nvrR+QciOjR5/6ahKWi20hdgF1n4Rrzfppr O+4Q== 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=lza19VRpnh448KKodFXzc+exvfJkW+GpNfYeBkFipADzI6qVelrePMJR/QYzyDeobk hqTMBV+miOUxzgYBUTuadnKXOJrnXbB5GyimQIoedtaklsmKDRYL/pV7gLK0GhS9OoN4 h1bOG1PNuEF/MxQveDrn67XBaxNGrT1DYsYfm9GWYQM6l4bTMMHVi21NE+6RzvTCDMz9 W5zKI4/XLAZ5m5vHzhh1pJM4AtVZXn9362JVHrpgMpNs2n4vrJceB4EUkhWgBywIQjqh w7D5PBkCea1BCRkVvNvhCnb7hLHpb/5VvMwp4dOGaW8CST39ShNtugIJtrMpCxMFRZ2O rcXw== X-Gm-Message-State: APjAAAV8777qDC/K8trMZ2pyFUEmhbed5n3dq8FoUNZH/pYc4ZncSYP4 5FIzGEu99L+LStESm0CvfwCdz9zQ21c= X-Google-Smtp-Source: APXvYqwxhJuDpn09p2GeN2LXTMoCKfx3Y9DMvoVdJhtAMZAFualpGuYIsRYLxdAMIhdiqB5jdiAwpg== X-Received: by 2002:a81:b717:: with SMTP id v23mr42621851ywh.120.1558550567474; Wed, 22 May 2019 11:42:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 22 May 2019 14:42:19 -0400 Message-Id: <20190522184226.17871-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190522184226.17871-1-richard.henderson@linaro.org> References: <20190522184226.17871-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::c44 Subject: [Qemu-devel] [PULL 18/25] 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: peter.maydell@linaro.org 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 Acked-by: Daniel P. Berrang=C3=A9 Acked-by: Laurent Vivier --- 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 Wed May 1 22:23:38 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=1558551907; cv=none; d=zoho.com; s=zohoarc; b=QqvWBAUe5jTnGnyRYXsgvQSqCDxGs5GzabXrGRvpBMUwsPvh31U0wXKTcCpG+V0NRWbHZ7lRzXbh6WvL+WYPhOqyRsL43/tqGdMyKheQQLAifXUGlO1BOX/KP03lb/HolAekjUpTNchkob5neilkMGJ3+KAh8ssGb9IHIZkDu5E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558551907; 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=Pgmc9vt5SeCoMl/kpJgU58mtbLpNRM8I85K8GY9aul6BPL23Xkm5vnuRCn5lhbTV+1gYV5X19wzJ3nUzSTxx+mtzPIxa0VJye3eLEHd9t84GNhTa92s1QxgbQhG86JucfLAhGPQZH/Iq6TUTOKBlVRCELi1j4xyGDGkPvU/Fovw= 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 1558551907437232.2258457611639; Wed, 22 May 2019 12:05:07 -0700 (PDT) Received: from localhost ([127.0.0.1]:49748 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWXV-00009f-5E for importer@patchew.org; Wed, 22 May 2019 15:04:37 -0400 Received: from eggs.gnu.org ([209.51.188.92]:34793) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWOn-00086d-RV for qemu-devel@nongnu.org; Wed, 22 May 2019 14:55:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTWCQ-0008As-3b for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:52 -0400 Received: from mail-yw1-xc44.google.com ([2607:f8b0:4864:20::c44]:46557) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTWCP-0008AK-Tu for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:50 -0400 Received: by mail-yw1-xc44.google.com with SMTP id a130so1226271ywe.13 for ; Wed, 22 May 2019 11:42:49 -0700 (PDT) Received: from localhost.localdomain ([71.46.56.17]) by smtp.gmail.com with ESMTPSA id 206sm1299445ywq.74.2019.05.22.11.42.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 May 2019 11:42:48 -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=D6Au61lOK217c6i5LElq05rVyQKQbmn2pNey3boFrtxtSEThXVHUu3ot12gV+CkRWd 6UQAxBzpWOy9ixwBm/LAaJy6zViddRGqqI7M1zAVESCGxT3sleVAvUkHfXM5nlrnr0UT JOyIyfv7O64xd7l8E+0RdOLxGYLWbUsx4NKle+UvNquTt+vIoOK8SYzauVVYYRAgOsvL cP9z+zQUd0HRe7AE+mCWDT5AY7OTWUd5leOoyBgFNa81UZtgmKKCgpr07GYE0+PNXKCe lbb/1cbsIb140iath7U2DEMxYpEXtidHLQEeWIX8/IZ/4PKV+qeRWRW+Pspbp4V2xRQn pl4Q== 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=Qq7l+iZs2UxPf82rZbf38TgFIvcHkMHXJEYWuIOAPVM1H6iojjckq6IbHWa2blAuog ssCa2NWf4TTNWoSMd69c8rDRCbdXjtNSe693cD+9UnA/b1Hmrnj1f7PHoohs66LTtye3 ExHoaXwb09t59evxUXjBUCRHfK7832WiFNMX5pHW9q6WzhEgC5zQFRiv560D7WRVha2f nkOaxIIe1mha3IJ1Mu973H10KJyDttgZqMn9uy1wgRrqQbPml1jOFwaTTIDkWcrQp3MA EhCgygfVZopkBVuh+76mRqzsPxFHEVnY/rkB6doTT0qrO+wbwyKT+AlbGj+oJbzuSWa5 Z+Og== X-Gm-Message-State: APjAAAWhnRO9YL7DA8OaMQcaDjhvq00h1A3cAFqxTwxtniPesT7MAqs9 VmojBXabfW6JCptjPBf5uhkfg1WGA+U= X-Google-Smtp-Source: APXvYqy0fgz/9DyRLZFpjD9P7dDhyck2g4dRXY6d7+VluSaQWAtssoqVR4t4BYMVFR9HbuiyFHWxBA== X-Received: by 2002:a81:3c13:: with SMTP id j19mr24625854ywa.483.1558550568683; Wed, 22 May 2019 11:42:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 22 May 2019 14:42:20 -0400 Message-Id: <20190522184226.17871-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190522184226.17871-1-richard.henderson@linaro.org> References: <20190522184226.17871-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::c44 Subject: [Qemu-devel] [PULL 19/25] 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: peter.maydell@linaro.org 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 Acked-by: Daniel P. Berrang=C3=A9 Acked-by: Laurent Vivier --- 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 Wed May 1 22:23:38 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=1558552278; cv=none; d=zoho.com; s=zohoarc; b=adV2BwpD2gJR0qq/rqCRKlnEbFKuBNVuRSYTI0/yssuRjCKPh2tT7ihqzszF67Kqv0BMXVyUuPM+vkp47cMZ7md1o5aFyY8ZK8aEPF7LbceBHSipgpzliNfyCJVXMdj0cVWTIGhgYmo3R28qNfAJ9IencsCifSFbQAvQLAXIp3o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558552278; 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=IgzeTL9Wpmq0P4arej+nMw38Iis83m0jLI0rfmUvIHFBilK+sUSS5L1yynOK70CvDexVJQkyx2gvQBM2j7obEp6DfL0dJXSeJiDVM08e6ef/UGtZpWSjsjUYDDr8d6dqxSaONZE1vfB1esKxn3D3qltNYNAzvqDEYdU1Gf85H6E= 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 1558552278632914.2859214678783; Wed, 22 May 2019 12:11:18 -0700 (PDT) Received: from localhost ([127.0.0.1]:49841 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWdp-0005R9-FA for importer@patchew.org; Wed, 22 May 2019 15:11:09 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35052) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWOn-0008Eq-Gw for qemu-devel@nongnu.org; Wed, 22 May 2019 14:55:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTWCU-0008CI-1u for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:54 -0400 Received: from mail-yb1-xb43.google.com ([2607:f8b0:4864:20::b43]:32786) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTWCS-0008B2-1G for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:52 -0400 Received: by mail-yb1-xb43.google.com with SMTP id k128so1268603ybf.0 for ; Wed, 22 May 2019 11:42:50 -0700 (PDT) Received: from localhost.localdomain ([71.46.56.17]) by smtp.gmail.com with ESMTPSA id 206sm1299445ywq.74.2019.05.22.11.42.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 May 2019 11:42:49 -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=pIeas4e2eGmoShylW72dz3I+fq499gQC5L5yzxJlyyc95qlsW42IE94fKa3YpY1u9V WCio4iCMHCRVIOsRLpq/f3OiIfkycpcFeT0mhBSu7t3l6saUO1KtaEpQDYDmlUj1Nw+M 1eASOtVyS0YSVV29yxiCs0ttGAS1CPQEZFM2Y+cMZ+yECIpAsoedS+SBsFz9UO2yWQJ3 B+pwbDpB2vna94DhRjPpGJpzT0CwIYWHXOAF8TMmttfU6cC5tUUHBzRBmCAcmXI/dPzb /8cviERkCdPeqq21PvFmno4zMSHPGMywPt5DGL5WLhVu3HrcCJpwsBvg7fvqVnBc62zv sduA== 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=Qbqe3sGESU5hH0yitN6CycIhuvQHzJvvf1/VPm0/pUAZp72TGBzLKosW/D6uur7UPT LxiBzdtpzw/K3G/ipK+bKAvjavzerWWCA0fb7SnYafOatesMzmUZvDE8glPCpaDPw9LF ZF2HO9jVqg519t7HblzC88UgnvrZ48EBEV0o1xzBCCknmSObxej8JPelMWkPn6vqURze fr/oMMtlRmSUlVZLJrr+E3Wdr2sb5UEDTc3sJ7mRePakUnw1f57Km3cfBHHFaiIOcCVX guW/Mx/IaezjsVryTTsOi/4aciuFuRhrmhmfRA16olWt+kMVlYXyFGFpLdeIrrwVZ9K1 wseA== X-Gm-Message-State: APjAAAW4tRnQEgr3yN8YvvbGbuifw5ay2l9WbA7BYgtYqhRs5zUXWtbp IdJ8n8FSvLMqxMAHYm2uF3x/L061+CY= X-Google-Smtp-Source: APXvYqwcl22IEHY0L4PJQdIKh0zlkvS5K8EWxiFyzmZS+s3ysZ8VIGtSXAGo3D82qpvDrNvxwAGf7w== X-Received: by 2002:a25:3c9:: with SMTP id 192mr15663764ybd.223.1558550569701; Wed, 22 May 2019 11:42:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 22 May 2019 14:42:21 -0400 Message-Id: <20190522184226.17871-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190522184226.17871-1-richard.henderson@linaro.org> References: <20190522184226.17871-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::b43 Subject: [Qemu-devel] [PULL 20/25] 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: peter.maydell@linaro.org 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 Acked-by: Daniel P. Berrang=C3=A9 Acked-by: Laurent Vivier --- 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 Wed May 1 22:23:38 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=1558552462; cv=none; d=zoho.com; s=zohoarc; b=SeycIW7CWratjBPZ5TFwqAimwGbPGt1WyC2k0ZoF0WJwYz2JnkKWluDZde+7eYkCuSPvvUer4hqmQzaPoeOE1vXeJuEeognUoOzoEoCKcIsLiFYnQw7LNbRhdi9LCpAjuOIHSFpfkloTNnrn2hlvXjhjsaTPzIMyNOvSzx4y4tk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558552462; 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=91uu1aUA9Q1duAfeofMBsz4QGLzYWym0CyS3yfCCEtA=; b=jDOwmfRN0szI2IT1Dh/9s8Bx0OkARgBX/Wvdnc2Lw3uHgdmGSqEmn2V8CdgDM2CDx4r5YjWu1/rmhzNr1/AZc/q5Gg6dndmorPCFNhAwAPSGt8mQI9puoZP0mcDzhD20dA60q87z8729r/ezWPTeBgKPyQVHtYgchYDMg6zLYCc= 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 1558552462328916.1822866832204; Wed, 22 May 2019 12:14:22 -0700 (PDT) Received: from localhost ([127.0.0.1]:49893 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWgr-0007kv-6k for importer@patchew.org; Wed, 22 May 2019 15:14:17 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35163) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWOn-0008Ln-4x for qemu-devel@nongnu.org; Wed, 22 May 2019 14:55:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTWCU-0008CO-3H for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:55 -0400 Received: from mail-yw1-xc41.google.com ([2607:f8b0:4864:20::c41]:33874) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTWCS-0008BS-3V for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:54 -0400 Received: by mail-yw1-xc41.google.com with SMTP id n76so1254439ywd.1 for ; Wed, 22 May 2019 11:42:51 -0700 (PDT) Received: from localhost.localdomain ([71.46.56.17]) by smtp.gmail.com with ESMTPSA id 206sm1299445ywq.74.2019.05.22.11.42.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 May 2019 11:42:50 -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=91uu1aUA9Q1duAfeofMBsz4QGLzYWym0CyS3yfCCEtA=; b=WUzmFOKaaPmzf3hF3x0DaG9GKdGLaS1So5frVXQSerJUkUZeDx38/vI4FL0MtJ5707 hOknTDKjRKrJwTLz0IZ5dqWnz+EskpRYtRHa5llCfQcXw1UGMBgATB3BLQeD9onpHhxM mQfKs5FdQSdwTB0+X3P5RmPTsMqxw3ZR0Pc7Rhe0z1j+4o9b2Lo5cLy2jNwPOhnWkp4j 3ch4ux4GWmHZIf2LhGvzMuU8XhpXeJvJC8RPoaMx/EKH1CfryWztHf+aAl4tgjebneSk LdC4pIc9FU5RDxm0VatQg6dxoD9I1/6d6plp/bT8lOROsLOA0aAZaaDbK/wB6jwuCyET HBkw== 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=91uu1aUA9Q1duAfeofMBsz4QGLzYWym0CyS3yfCCEtA=; b=KoXBLX28wzq/sSCgTlBj2biLh6zB6MUHa83dop1fOL5UjCvk9KHbAgBGGhJfs9IHKW R8hEKS1bDm8bO9+X3KjDG9QN0ry3YisdWX0bFxUbhnsnO+9GhtqD1axtzhcXwg+pqrLl ZdOxxqjdqHogSxb7FyueuH1Jy3JlKbkPfDfPE8/Y6swq7kIwae0MHf+3urELM9j8dNSh aZjlHul2ExJeZ3d6cJRtbmF64XFgpOSMonkTLS+mAjZcZY+a4kN1gWpAV9gHoLCRCwrs t9EB2zcfvcYank/EPDvOYVbERei/8I/F9CpjXgCSYwXw8/3o/ySjAu2iWdf/LfcO+Mbs Iyng== X-Gm-Message-State: APjAAAU9C9vGXP/4FZVFcjBq0W35ImqkZhmqTEBx2+Iv46n765kDKTny ZlmYh/5uGjA2w9N/d6vWUtFbZyDZUBw= X-Google-Smtp-Source: APXvYqw8cXgGxW6iU3K/oTvgYCE8zG2/humI/SoVlIw1AgdHTlJhIsZs92YsUL8T3Z2l0H+JOuBSpg== X-Received: by 2002:a81:2513:: with SMTP id l19mr35956533ywl.299.1558550570781; Wed, 22 May 2019 11:42:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 22 May 2019 14:42:22 -0400 Message-Id: <20190522184226.17871-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190522184226.17871-1-richard.henderson@linaro.org> References: <20190522184226.17871-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::c41 Subject: [Qemu-devel] [PULL 21/25] 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: peter.maydell@linaro.org 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 Acked-by: Daniel P. Berrang=C3=A9 Acked-by: Laurent Vivier --- 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 72e43b517a..3de792a04c 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 e2d5c8e34f..6b91082b8b 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 Wed May 1 22:23:38 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=1558552295; cv=none; d=zoho.com; s=zohoarc; b=IIhQkMLw76T5yjAEEkmZKp9O1R3re51U0xuW+4UvV5pDrUHWtSe6QyGt8EOrWbsVIBntmmz2dOZ9jXVJyFXamzQkj4G3KQRtG3k9XYtLremDRBPlvsRe6lXomGhfLyrGgsO7Zh7ycBIk5uHuns1G8D89DOGHGsiLKAUxDeKV/cA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558552295; 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=eQF1EgwSKdQ+jEilzLu3oc5jnuWVHN3zq38+Bl8lFmE=; b=Jpw46FGDF/EvNRf7NeO1Ndx+apHFzd/IEVgSgXdvN/POHu0CszOGgEUG/Bsdz9JJClqxWK5DBnIklh0Yr0nUoWde8T1jmb8D9rlr53zA8xmiO+DqRPAIITetzrmX2P2dB8ClsjgbcSFvK6FyIjhjwi7HI28mkBz4YyCI/+FUf08= 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 1558552295197866.6476265089834; Wed, 22 May 2019 12:11:35 -0700 (PDT) Received: from localhost ([127.0.0.1]:49844 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWdw-0005VS-5Q for importer@patchew.org; Wed, 22 May 2019 15:11:16 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35086) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWOn-0008Ga-BX for qemu-devel@nongnu.org; Wed, 22 May 2019 14:55:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTWCU-0008Ch-8E for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:55 -0400 Received: from mail-yw1-xc41.google.com ([2607:f8b0:4864:20::c41]:40638) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTWCU-0008Bk-3l for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:54 -0400 Received: by mail-yw1-xc41.google.com with SMTP id 18so1241479ywe.7 for ; Wed, 22 May 2019 11:42:52 -0700 (PDT) Received: from localhost.localdomain ([71.46.56.17]) by smtp.gmail.com with ESMTPSA id 206sm1299445ywq.74.2019.05.22.11.42.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 May 2019 11:42:51 -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=eQF1EgwSKdQ+jEilzLu3oc5jnuWVHN3zq38+Bl8lFmE=; b=HSh2u8/DWaOXOeGfFCromNcDpKZGo42mmhKZKJaXRRO2/rWdn+CJvChECQ2ZfKCKTH PDGdHY9cmkTnRh51F2vzo81xvDADZ9FjjGUmjZUFtFPklj46UBr0X43fQdcXYcGmv9XW QtAH4L+rb4MIDhni+4BqQfOeA3d+FRWPWfeY38rU4WWtuRlwvZ9f/4obucFjb3zkKtgK exC/i22lcCBGQ0FymOqMLL1R/XpQZeGL8USh4adZ4Q158ZGsVLS3ynsr+3qL8QeWtgze cg4qjoOH6VVj4bCJJlIZaC+81BZlyDAnd0YE50kTZ94+q/qasfyyF3Dtni/pf9xpODAR qBtw== 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=eQF1EgwSKdQ+jEilzLu3oc5jnuWVHN3zq38+Bl8lFmE=; b=UOFas/ZbtpitvZTI/OJNFtwGL+8L3n0Lnx6GPIvCZIrcWpNhennUujM02tOxGilHh+ lNddCNEWg2BJVxlU4AzYXa4fRfw/pzfI14ZX40wdX9H45MWJNGoyQlPqI9PzSwO/Kf60 fJFgpUfA9WZQeGiLLwYEkxIDp8Y4v0DXdWigjf5sCUcNHL1NgbdfYFosTLaxjuuchMSJ GUKFivNlE4LKuoLpTLu4NRc7GmYG5CAg/PjNPB7zjp3rgyalSXcVM6G7+rFNzmmZE+xj KBcn2mRwf6sW3TZdRP6R7rZXVZLgP3LXgnqlUy8JbegTKqXlQ6LPSOIHZRcdIvYJB9fS +sCA== X-Gm-Message-State: APjAAAUr5RC6T98kabJFd6Yj7sRlRSN8FZco4fgo/Atc2Lgbi2+DCMF1 eYbFL8rnT4TEqtfZlhK+6hCGAMsQzkE= X-Google-Smtp-Source: APXvYqyRWCOt7YHiFYBoRECfARfPBlPSJ26LvmXQ6mvctwRg7XLms79+Ce0gqocBF92Wy/R+xzFqhA== X-Received: by 2002:a81:1ecd:: with SMTP id e196mr40520973ywe.356.1558550571662; Wed, 22 May 2019 11:42:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 22 May 2019 14:42:23 -0400 Message-Id: <20190522184226.17871-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190522184226.17871-1-richard.henderson@linaro.org> References: <20190522184226.17871-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::c41 Subject: [Qemu-devel] [PULL 22/25] 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: peter.maydell@linaro.org 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 Acked-by: Daniel P. Berrang=C3=A9 Acked-by: Laurent Vivier --- 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 6b91082b8b..acd23c53ca 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 Wed May 1 22:23:38 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=1558552079; cv=none; d=zoho.com; s=zohoarc; b=EAW8wkYLfFFdLHsTMd4dALz0J9pI/RzWkWtEKRKTDgWei+HiX36CMrkg8lY4hL1YJzovo3ZBylFUMAiy9g079hHJ6zeKNGT2FnQNkwX2SOC3ZD//Jy2IxqNCQLAzbvgnHs4S+w29O4gmAoW5O9RhTce7vcsC4F//LUwbV41KWZ4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558552079; 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=DWV2mrgsSMTQLNN5PcaeOYUETxZIz0ZbfNGreDRp7doksryaiAlWTFCHQ+OWnplIFH0Foo7F9WDZ+ABo6yG8IeG0g9yVbidK9Em0eYo2j3wUzNWUQp7cUi/y6SZzsnBOyvzFDm+QdmsQRBQP2TV+Q7sdYP9OA8e0nv4Kbn02UH8= 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 1558552079482602.7383573956804; Wed, 22 May 2019 12:07:59 -0700 (PDT) Received: from localhost ([127.0.0.1]:49806 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWah-00032x-Bc for importer@patchew.org; Wed, 22 May 2019 15:07:55 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35240) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWOn-0008P8-Gi for qemu-devel@nongnu.org; Wed, 22 May 2019 14:55:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTWCU-0008CY-5n for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:54 -0400 Received: from mail-yw1-xc43.google.com ([2607:f8b0:4864:20::c43]:33509) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTWCU-0008C5-19 for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:54 -0400 Received: by mail-yw1-xc43.google.com with SMTP id v81so1252036ywe.0 for ; Wed, 22 May 2019 11:42:53 -0700 (PDT) Received: from localhost.localdomain ([71.46.56.17]) by smtp.gmail.com with ESMTPSA id 206sm1299445ywq.74.2019.05.22.11.42.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 May 2019 11:42:52 -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=f1PZ2iIn9dsO3VMKtMvskBrGiJK4m9OrtvCaexOuwm0hu3vKwY6EmmdZbFdpr8Bj5q etomMpuqZXjetwUr01u5T1/ScbyUjCW7CDEwkLYroNgnJTVSwuBpsYYh+ru9vP+FqZp+ wVCWXZtZaSpJJY1kjH1sjfDMyvsMaqdJPjbhNl/jBG4+Sy1OcYnZlriRf1+ey2v7zJk9 EpgQYgYiY5ivG//HsHY7r0PTVJ6Mm7738DOhgvp439k9URnpX3XvL/to4YSfjO0BahFx cF7Qf/NpeSVILfSlFIIXfgQQAJmHuGYX/VP0h60jFBF5KXH+zUAlr7zgILWFbdPqkw+4 CrBg== 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=M6yV0Jt9z0x57FaQvAn5NXEHx8zw9Vn+j+LfI1RQEXKtTyMQi/IEd7D0v2JrQq8bmx Li8E6uYgIWe9g35i/3gGOO0NO/nY+9ZpfRt0ajfGrrLrpz5lAhkoA9EyIJTw35YhtI84 4sB5VVSvIgnwGcqNAqLq8ETuKRGmXQIm4P7LlOYLoZYE94EUS0LY1dimox79vsRgQkuT v19H/JRm44EA6Hx8enfg5phZajUa5K4IRsI+uET6q2LIgMkmVy/baH1V/ERN81QccJlF mnSP33Ds8o8MBBneruwVmC6nLCo3g4731UqplMs2Vihklr+RBi10uri2epwoM6Xa1pOm MUrQ== X-Gm-Message-State: APjAAAVLFuFGB+31NuJPCOcxrdiHI/MjxAxDRken2wvgrFx7ddnYjkLV oSvmmvBnru6GDXTiP4toHG8si40x2tY= X-Google-Smtp-Source: APXvYqzKD96eHrhxDzKNOQrj62NmxlATmt5ICBslN+ccxkv7rjbpcBDEd+bY115xJgfX42n+MusjKg== X-Received: by 2002:a81:3088:: with SMTP id w130mr42322592yww.63.1558550572691; Wed, 22 May 2019 11:42:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 22 May 2019 14:42:24 -0400 Message-Id: <20190522184226.17871-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190522184226.17871-1-richard.henderson@linaro.org> References: <20190522184226.17871-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::c43 Subject: [Qemu-devel] [PULL 23/25] 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: peter.maydell@linaro.org 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 Acked-by: Daniel P. Berrang=C3=A9 Acked-by: Laurent Vivier --- 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 Wed May 1 22:23:38 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=1558551656; cv=none; d=zoho.com; s=zohoarc; b=a/ax7NWE6+5ShYqJ6MqHt68T4bYZyo7R78PQ7ObKxcD8gi2J/avAZU5XJVj6kfLEryJnEik+0UAKqtWM2noxHFn3oo7aOpdP16onRoxxievBms9KxkmW/0NA+P8XlLPQ0RiYuJt8fafIukoKoV+lZVGAE6pROpyluhOXNW8y/O0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558551656; 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=ak2wxfUr3NBC6/0PuovcunMN3dPe3wgi2B7bTH47NytZ2ZpIopz7iyQXM+t5UVXIQegdsW6Eap7j34rGEiePgzPxIqyBzG0AdHOst6BnPwUyuECAzI6vo9hT/A1+frdLpkbC3ucv4ny39h0ZZpo0a8TTh6PLk4X/Cj8tXeyWe28= 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 1558551656170747.5917902400048; Wed, 22 May 2019 12:00:56 -0700 (PDT) Received: from localhost ([127.0.0.1]:49696 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWTu-0004CX-7U for importer@patchew.org; Wed, 22 May 2019 15:00:54 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35158) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWOm-0008Lh-RQ for qemu-devel@nongnu.org; Wed, 22 May 2019 14:55:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTWCU-0008Cz-NV for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:55 -0400 Received: from mail-yw1-xc2a.google.com ([2607:f8b0:4864:20::c2a]:44152) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTWCU-0008Cn-JK for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:54 -0400 Received: by mail-yw1-xc2a.google.com with SMTP id e74so1232055ywe.11 for ; Wed, 22 May 2019 11:42:54 -0700 (PDT) Received: from localhost.localdomain ([71.46.56.17]) by smtp.gmail.com with ESMTPSA id 206sm1299445ywq.74.2019.05.22.11.42.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 May 2019 11:42:53 -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=obXPQmveNKyNSXpvyCvQgGuL84HmN38d+ocQ4xu6Hy01Ako0r2YNybJi3sRWYgL+L+ vwdcq9wugcF7ZN1vN1Sro1ztACdStOwROqJYX5n9Kx7PHT3tne4Pm6I5qJnq4fuAW7eX 8syO7oe2HUAdAHIFe+fNyMGHHtU1vUpDVZmeYHB6O/oU8H/oUlro/vl+A8GGP7KZk4DI Z+vu0eg9D42r5+pS6S1fPUTUDu1RfDNTZAGf+ttHjebL1EpUNAO0RT9OS7RQDDNRwo6H ycmRoNuq3sRHPNsovVxSMUSJbQ9Gr50NTbAIc4zSH1otjeUSzHPPJoHRmVMoOayrI0/T Remg== 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=a0eCcq1tzvUHZKRmTvBR9v28no1C1mx8aa3bDZUuozTsjq8rSe+DYDZ64JDk0RB4rJ 31areLsoRuOF1pzdGvCdFRMcjM8SrRDx1HhrbN0jKoAfGcfPdoj3qUaxU/4bn3oedsFh Beg0XV5Z1NXkuTxUCQ9VNhDfQf4+uvnEm+JoxwOY8pD9WGtPabBpJQW6aYegZFMzBKqa e/Ls1sUTbuJav7ezN42anCbNHii6k9d6OlNT1jjEgh3GU81/a+ehf8LFd1S2ohMihou8 PKfIhxUyBUapMfQ2JLWYc00sg9FL+pVnYt2K2hxOTs8aZKK4ER90hf2xNDY9fw+/gTvf Xd7g== X-Gm-Message-State: APjAAAWDjyBTDqA2+/nAPevy8vDPYPyB5qOPCbovTEyXFSL379oothyI 63JFYN31IXVa00IqWD/zgZwXxu+TkIo= X-Google-Smtp-Source: APXvYqyCrGxOAQ446qneF6y9PxvIQ1IC2fm2mt+hSc5eLKZN/tvXP+J+lB4XtoY271IU2qKjddELeA== X-Received: by 2002:a81:924f:: with SMTP id j76mr40316861ywg.199.1558550573715; Wed, 22 May 2019 11:42:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 22 May 2019 14:42:25 -0400 Message-Id: <20190522184226.17871-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190522184226.17871-1-richard.henderson@linaro.org> References: <20190522184226.17871-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::c2a Subject: [Qemu-devel] [PULL 24/25] 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: peter.maydell@linaro.org 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 Acked-by: Daniel P. Berrang=C3=A9 Acked-by: Laurent Vivier --- 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 Wed May 1 22:23:38 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=1558551890; cv=none; d=zoho.com; s=zohoarc; b=mXUF+VSBvMwiIde1coekhrWJW8Yn1A743oLYZ69Q/wfX9zeKNwgB4/XOf2D0wwAODYx6mx9br2BoXGu6PQhlywBTKiTLsAD4hkyxl65nufiY8EyIRdR6MvvE9L0Hb5y6r4vgWSm4uGGYRDGMFO3tQjV/He1kX6eygC76SADvwqk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558551890; 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=GpDCiQN8/aZvZ+AXeAAwaFQMM4p0yaXjgzSjXp1WzGU=; b=IR+1iFlo57yZ3UQd1gb8Yqp6RJ9Ulueh/+beOHsWle5XgEV8IyeEpe4KItKd+mFxbh2itjsG3G4C6B+1WYi0uZY7XBhjMG1TztmavJ70LTwvxM8tsvbTdwduCO8qIqdKngrtMfzv5e05sXyEJ0szNQSZ8tYX8MuwEL6h7Dy7N20= 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 1558551890722665.2616004622053; Wed, 22 May 2019 12:04:50 -0700 (PDT) Received: from localhost ([127.0.0.1]:49750 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWXW-0000CU-M6 for importer@patchew.org; Wed, 22 May 2019 15:04:38 -0400 Received: from eggs.gnu.org ([209.51.188.92]:34796) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTWOm-00086f-OQ for qemu-devel@nongnu.org; Wed, 22 May 2019 14:55:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTWCV-0008Dm-Rq for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:56 -0400 Received: from mail-yb1-xb2f.google.com ([2607:f8b0:4864:20::b2f]:46137) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTWCV-0008DO-MX for qemu-devel@nongnu.org; Wed, 22 May 2019 14:42:55 -0400 Received: by mail-yb1-xb2f.google.com with SMTP id z22so1237577ybi.13 for ; Wed, 22 May 2019 11:42:55 -0700 (PDT) Received: from localhost.localdomain ([71.46.56.17]) by smtp.gmail.com with ESMTPSA id 206sm1299445ywq.74.2019.05.22.11.42.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 May 2019 11:42:54 -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=GpDCiQN8/aZvZ+AXeAAwaFQMM4p0yaXjgzSjXp1WzGU=; b=tunQmnmfmjy9xX7MhYnbid1kucG1KYVHbJNaY9b1xAq2m0EteoLPV0LGI3SV/XFWcS fTt5mVJDu65uROeWIBs0fVvDVkABwdm2PL3xHQlqOMWosbzx9FXrHGBSNmk1DLlMqzE2 c+tQ5avOPrNlWkk7OUwiLVK0fVHRXLSUMAmItCcuoP/z2B9ABNLpwPlK9Daa6ce6zkei NVGlCJIN6qQTd/GZsEeRDy+cLtgifVcwPSFL8xUqP8ayDIEk6Wq1VcPKeyWrWrcCcb0S SOsCAylOdYFDDPUX71RcSge/HJEBiCYr+DTMlGVPGbzVEDj9/4hQeTsyvyqHqgt3KcIr Q0dQ== 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=GpDCiQN8/aZvZ+AXeAAwaFQMM4p0yaXjgzSjXp1WzGU=; b=r70g/YMOcfdcmP4dpai/0f2LMFNGNNpMWsTNdl6IeUT/aQVclhVWbKzrBBwi4V4mlG NvyfBbVeQqJG/Dk7Dlx/Py6VpRwDaPNLvi7gFU2zsJviUchU9hp5ehnQ+Batsw27heCA 1+6KZN1RWIXuNInUiaOFhLXLcw053BvMhl8AYam6Gd88Sjq5nHDUKzW2zYSax/G8wT3q KoMn19eBtANwxE30tEWnKPVDrR8gvVg/G2H5+ef7dMg0mVgoEZaE4DwZBDqarYmJ+dGB Ce3L5LGRuYJpQ+Yah2Z+4Y8Rm0+rKTDEy4BVYvqfFmdgP9xYt30GnifRd3hKFiK58oBG UMZg== X-Gm-Message-State: APjAAAWr4jrF/UAZpyMLA8gwPzWEBsE77Jm5lc1qzrXEgi/TQEy/SZqX 1UYV0NWaIbK6FUPm1+ET+gTDVhyDC5s= X-Google-Smtp-Source: APXvYqyGvSjFjm5VZOnmY7Omo9st7pqwNnHapFpchckXm6nhvesRH867O/zAwmtKr+euXAzGb7RNCQ== X-Received: by 2002:a25:33c5:: with SMTP id z188mr12793969ybz.359.1558550574685; Wed, 22 May 2019 11:42:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 22 May 2019 14:42:26 -0400 Message-Id: <20190522184226.17871-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190522184226.17871-1-richard.henderson@linaro.org> References: <20190522184226.17871-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::b2f Subject: [Qemu-devel] [PULL 25/25] 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: peter.maydell@linaro.org 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 Acked-by: Daniel P. Berrang=C3=A9 Acked-by: Laurent Vivier --- 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 2df56fa977..357d3c43a1 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