Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp5147180ybe; Tue, 17 Sep 2019 03:29:03 -0700 (PDT) X-Google-Smtp-Source: APXvYqxDtD30aSC+zfewLtbH2XQegro2MGmGQbgHNIWckkuCrOBPjeG4bo1cqRIa8b7tmtv1IO50 X-Received: by 2002:a17:906:405b:: with SMTP id y27mr4161964ejj.18.1568716143013; Tue, 17 Sep 2019 03:29:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568716143; cv=none; d=google.com; s=arc-20160816; b=rwTKGVH2YN6I6ZlHTcfE4uiSMqlWsgH2dCop+Vf8oneEHsKly2/qmXU2E+qMwS8ufw HK7ugFLGQfqgYSS/gLbhUxn/hQKMAC8IK3KYezwyfO4yAS5ZfJtrKLk8s0Y8Zv773rgY kS+Ghn/PaV62buHzxgzokzHrxeyMdH0oIr9zgTNrheeg26a+NBBHoKrlUL+3+iTwm6VF jpIPJSKJBd6wVY4Xi7NibWKLjOmk23msowI3Kj0wgmUmrDUwR6c1r4+2Vz5UtUe1UVdE gb5rjosPtkaO/ZwsRIbOKKL3KfbZr7RmYFXovyev9sNemMVoL/1JXDncRRtIYRG9q6ti 6hdw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=SXu0MV/FUBqRVxLRwT4BaHmULa3gnnpHoNzohLtXR80=; b=Usp03irrdAGbVdFzj+dQbt5ElOhfMsF8FPArGUqUndxZvIqJC0pOMS72b3cFTtC5K7 FMLq3y4C81r1np7/NTwjBEmLNEHE/z0Tnxl5Tm2t3/JeGkGYawEVJLxIdF70s762DaOZ ULX3G0wpON4HtI7NNpM5XAH9BV6CGJwjvFgevnekxYdrLvWIMtmTwI4qXuAR0EOC6W9e apHDPBoiEIpRTPwffIT/BYQRD3IOqSAKIMWHKzWp/2nbbtpL9XrG9DlMsq/yePxR1Ajs JS5qIhc8DurD9dqQRZIf9CjCVPZMnwRvxN3uxOHjjrREN7pBbvqi8iTEFXevPt2KkmdC yutw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-crypto-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p18si888816ejn.370.2019.09.17.03.28.32; Tue, 17 Sep 2019 03:29:02 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-crypto-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-crypto-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726501AbfIQJyx (ORCPT + 99 others); Tue, 17 Sep 2019 05:54:53 -0400 Received: from mx1.redhat.com ([209.132.183.28]:57801 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725972AbfIQJyx (ORCPT ); Tue, 17 Sep 2019 05:54:53 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id DC9DC308213F; Tue, 17 Sep 2019 09:54:52 +0000 (UTC) Received: from thinkpad.redhat.com (ovpn-116-217.ams2.redhat.com [10.36.116.217]) by smtp.corp.redhat.com (Postfix) with ESMTP id E2A965D6A9; Tue, 17 Sep 2019 09:54:50 +0000 (UTC) From: Laurent Vivier To: linux-kernel@vger.kernel.org Cc: Amit Shah , linux-crypto@vger.kernel.org, Matt Mackall , Herbert Xu , Laurent Vivier Subject: [PATCH] hw_random: don't wait on add_early_randomness() Date: Tue, 17 Sep 2019 11:54:50 +0200 Message-Id: <20190917095450.11625-1-lvivier@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.42]); Tue, 17 Sep 2019 09:54:53 +0000 (UTC) Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org add_early_randomness() is called by hwrng_register() when the hardware is added. If this hardware and its module are present at boot, and if there is no data available the boot hangs until data are available and can't be interrupted. To avoid that, call rng_get_data() in non-blocking mode (wait=0) from add_early_randomness(). Signed-off-by: Laurent Vivier --- drivers/char/hw_random/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/char/hw_random/core.c b/drivers/char/hw_random/core.c index 9044d31ab1a1..8d53b8ef545c 100644 --- a/drivers/char/hw_random/core.c +++ b/drivers/char/hw_random/core.c @@ -67,7 +67,7 @@ static void add_early_randomness(struct hwrng *rng) size_t size = min_t(size_t, 16, rng_buffer_size()); mutex_lock(&reading_mutex); - bytes_read = rng_get_data(rng, rng_buffer, size, 1); + bytes_read = rng_get_data(rng, rng_buffer, size, 0); mutex_unlock(&reading_mutex); if (bytes_read > 0) add_device_randomness(rng_buffer, bytes_read); -- 2.21.0