From patchwork Thu Mar 14 04:55:15 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 160287 Delivered-To: patch@linaro.org Received: by 2002:a02:5cc1:0:0:0:0:0 with SMTP id w62csp15073287jad; Wed, 13 Mar 2019 21:58:54 -0700 (PDT) X-Google-Smtp-Source: APXvYqyALyy5UaBdT7HYqnZHxDLa+/00PMTMsW7K5ilCMJ1E1OLCL9AZPuMselkZRwVEjVKw5pJS X-Received: by 2002:a81:2042:: with SMTP id g63mr15922365ywg.208.1552539534879; Wed, 13 Mar 2019 21:58:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552539534; cv=none; d=google.com; s=arc-20160816; b=LBGTt3sX1ORKCj6V1kg8WgVcTKnOUnwD840usqzP4x7lYnuzUFjzxhMVajhfo06JDN ASVHUk0o4EyITpIkns2iNGCjcvyvjZKS/JymQH+yr2BpebRP5hy0WDTUv69kmITHdJpx JzJ8br2gKqKQApFWF/I+1cO+JwezPiM1I0QYRHufkohPjeBibSvMRq0Pg89zSoOnC28S p3raDvmExfDytezOR4zf16V4tWJP8HHdjRiUVsXndiwNOyPS8ePWkfPZt5JdzAop3biG JS6r8PL8S97QDkd4Qhp0pFmaVjPLi3Vh/rDdgHHYkO9CjpFraCHdtRmzAnRTu5mvijUQ OoAg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=+xqsi/guaYA7D3YHKOREkAPcowZW/n5ISz+HVCnkFiA=; b=DAAhQix1IzQMX/jleYK1lG2ki6iZ63uRVq+f3Ay6zsaQbpJGeAAAPktwPLOQXa9zbC srRxNdiAMU0Mfn9kjbKxLbbIaHLXPqMe4KsL9Sa51RdsO9mMrYD/4yUXHdsBW/14VZq9 VorL1SHzgwmw9o90BZL0M+y7a23bmIsfF7KcfuTiF9Lu8M2VveybnjeLULAJKo5Zz5F2 t7oDfoJBmqlsgreAQO/iD+2uqvggXoubAgvz/r12HhxZrgK98CXH7TTiQZMdKEOjSsK9 Wfblmqb6B/w+zh5oTPRBv397/cbU9GOEZKsaNQbYDe3J+/VRRw2+K5mBAoCuawL7gXJM GGFg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=DieBk48w; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id f16si7813498ybn.24.2019.03.13.21.58.54 for (version=TLS1 cipher=AES128-SHA bits=128/128); Wed, 13 Mar 2019 21:58:54 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=DieBk48w; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:56863 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h4ISE-0006h4-CC for patch@linaro.org; Thu, 14 Mar 2019 00:58:54 -0400 Received: from eggs.gnu.org ([209.51.188.92]:56127) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h4IP1-0004U1-KQ for qemu-devel@nongnu.org; Thu, 14 Mar 2019 00:55:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h4IP0-0007Mh-In for qemu-devel@nongnu.org; Thu, 14 Mar 2019 00:55:35 -0400 Received: from mail-pg1-x542.google.com ([2607:f8b0:4864:20::542]:39623) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1h4IP0-0007MI-Ac for qemu-devel@nongnu.org; Thu, 14 Mar 2019 00:55:34 -0400 Received: by mail-pg1-x542.google.com with SMTP id h8so3146838pgp.6 for ; Wed, 13 Mar 2019 21:55:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=+xqsi/guaYA7D3YHKOREkAPcowZW/n5ISz+HVCnkFiA=; b=DieBk48wUTWAq2D11D/aTKBJN0ycVlMybg+DqjwRZnIXmXQGCfHkr+B86ZfFeFs6oe t+qEzKCR8WSjVnoFhEeJbHRlgZBEDggiOfFXwFn0p/5gIGJd5xjNlHZJMW0yvbXvP4rC YR9jC9lXG1zca+vUfxiGeSmFfXBSkVcjwPIep/blWJB6f9XyIpoYwUoS6LjBLtkflBbp 9Uu8DxqmkZG9Idy3eJ2hadiVpvMQkJPtgJU36joHnImRPgHGcU4FTmuv8Kc+VWhwR4fA 0Fn10+OYdLLHrpiTpVFg/Ye2IhtegG3DugPIVwa71b55OoTy4WhyIG8v89dKGCHCTKoB 4t4g== 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=+xqsi/guaYA7D3YHKOREkAPcowZW/n5ISz+HVCnkFiA=; b=WfPQ2zEREOeX38doepNTQHch8GR9IUDYveq396VZc2hB3KOqnGgbkT0Qf8GKibjVEP SBWKpe63EyYEUBnQ77mMQ3n+9PurOht3xZZXcvuL3VKHxx0bkzGdO3jPpjmwboXploh3 LLl3/PGQWJ55YPQSUpoC4mBU1h+0Mla5441QIiA/Uaz3mxWahxwiBSmoZwGVicjnL2Vw /Y1AHXESbCE8XaZnRDwiGV7PAjEHbvDBE72urUVHM2CdlM+O2tccPFF6sdQvG32JZSlM XXc6qtTVhIu4Bw9SnRvxcZYp+lNzld+/NQzU7aNCbdhA5BxwKviN5kRCjXkdIQpOEAad UHBw== X-Gm-Message-State: APjAAAUNj/pGEcO8ASTHd81Ujy54S2rhmW5V5/4HzbS825esYxG91TSo 3Jc6qkOi+5eQ8xaB75YE4hWNvG6XgtE= X-Received: by 2002:a17:902:29ca:: with SMTP id h68mr5189804plb.297.1552539332912; Wed, 13 Mar 2019 21:55:32 -0700 (PDT) Received: from localhost.localdomain (97-113-188-82.tukw.qwest.net. [97.113.188.82]) by smtp.gmail.com with ESMTPSA id d9sm16185027pgq.6.2019.03.13.21.55.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 13 Mar 2019 21:55:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 13 Mar 2019 21:55:15 -0700 Message-Id: <20190314045526.13342-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190314045526.13342-1-richard.henderson@linaro.org> References: <20190314045526.13342-1-richard.henderson@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::542 Subject: [Qemu-devel] [PATCH v2 03/14] 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: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" We can always get EINTR for read; /dev/urandom is no exception. Clean up return paths and avoid unnecessary goto. Cc: Daniel P. Berrangé Signed-off-by: Richard Henderson --- crypto/random-platform.c | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) -- 2.17.1 Reviewed-by: Daniel P. Berrangé diff --git a/crypto/random-platform.c b/crypto/random-platform.c index f995fc0ef1..0866f216dc 100644 --- a/crypto/random-platform.c +++ b/crypto/random-platform.c @@ -65,29 +65,22 @@ int qcrypto_random_bytes(uint8_t *buf G_GNUC_UNUSED, "Unable to read random bytes"); return -1; } - - return 0; #else - int ret = -1; - int got; - while (buflen > 0) { - got = 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; + ssize_t got = read(fd, buf, buflen); + if (unlikely(got <= 0)) { + if (got == 0) { + error_setg(errp, "Unexpected EOF reading random bytes"); + return -1; + } else if (errno != EINTR) { + error_setg_errno(errp, errno, "Unable to read random bytes"); + return -1; + } + } else { + buflen -= got; + buf += got; } - buflen -= got; - buf += got; } - - ret = 0; - cleanup: - return ret; #endif + return 0; }