From patchwork Sat Oct 29 00:26:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jason A. Donenfeld" X-Patchwork-Id: 12610 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp1114840wru; Fri, 28 Oct 2022 17:35:20 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7uUVxweOrPYFq7eZJ9IwQJhmk/NzNhO/wxJxM522islHqVDtbTp/Cu7/S2qZt5lFTFmBlt X-Received: by 2002:a17:903:245:b0:178:e0ba:e507 with SMTP id j5-20020a170903024500b00178e0bae507mr1807395plh.115.1667003720438; Fri, 28 Oct 2022 17:35:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1667003720; cv=none; d=google.com; s=arc-20160816; b=Utzd1MexUagasEg3lsIgSpZe1F0Vo4vyfYXbGYH+1fn2iMGp/CFNlq9eV8EhVb4HaG +oNtvABlgTdvfz2AiJ2MkVPbdoHMKB76NN01XMrSZFp4RlrAkirjYOMlU+jw+PA0Gt5J 7f69eUacZMiuGjW77FqTwGeIoG1MeuatF5EsDisf8KhjkbtKkrlNa2Dqxx8ZEDvFiCFy 8qrZmSvKzj5hfEu6LrhSw9aP/Aa1OPIi9HBCKzpePdbRlRd2ITbeowebekDFueTM4evF xOZ/9NulKI0Bdjk7mKOsbPx0Px6knjgbS5OaGHsVgCYphxlriTypluapwfwNdSlhchco 3QRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=oSzt/28SVInbI24zhK/HAss+TrNhWxqpt3Qf3wZ1sxE=; b=u9gSxUEfLN5J2/pxBfX7sGrcQ9lFt3s7Jo7kUXiG4H7hva2bPRt3Ekye5vebKFoJ27 uKUzxUUy3ZuyTcKXVc7C2PU3UZc7plBIkJc1RFestcYiRalpCdTs9JsI6Ngeuevcq4Dk Fm2iZHXYJLuGP2+bJId8QieDcddhorJMOzXUSy8lQdcPPeswmsURBEK+nUDySDto96lN uSZ93ULqipKxlfC3SEAYYT2XHeOwBasoBey5vJdAWcmPEhvJbANhVtJqVyljNvY+l5T4 fXI6adlq218DTmuN96pfqNVnAtbNDx2G7PaSfIOMOWb0AE5+HZ8aWHtX6uOWAtfLbjTb ukBQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@zx2c4.com header.s=20210105 header.b="RoZ/x/iR"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=zx2c4.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id u10-20020a17090ae00a00b0020579d99c4dsi142997pjy.138.2022.10.28.17.35.06; Fri, 28 Oct 2022 17:35:20 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@zx2c4.com header.s=20210105 header.b="RoZ/x/iR"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=zx2c4.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229456AbiJ2A0d (ORCPT + 99 others); Fri, 28 Oct 2022 20:26:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46772 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229450AbiJ2A0b (ORCPT ); Fri, 28 Oct 2022 20:26:31 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A83906BCC6 for ; Fri, 28 Oct 2022 17:26:30 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 68DC0B82AD4 for ; Sat, 29 Oct 2022 00:26:29 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 45F11C433D7; Sat, 29 Oct 2022 00:26:27 +0000 (UTC) Authentication-Results: smtp.kernel.org; dkim=pass (1024-bit key) header.d=zx2c4.com header.i=@zx2c4.com header.b="RoZ/x/iR" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zx2c4.com; s=20210105; t=1667003184; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=oSzt/28SVInbI24zhK/HAss+TrNhWxqpt3Qf3wZ1sxE=; b=RoZ/x/iRlhjG4O9TAaL8ucsa48MB2Ugx503M4bo8Iba6iTElylWw/tIM+iNqxK6TMWOPsh tKqM3L2B9Ab72H+4/2pve0xjIFwP4C91pbn2LlYgSn+N6KAmb8HIZmav5INT+pY8N0yLVy B5zOsTEKc4izynuZ5Igvip762PubpiQ= Received: by mail.zx2c4.com (ZX2C4 Mail Server) with ESMTPSA id a7c336f5 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Sat, 29 Oct 2022 00:26:24 +0000 (UTC) From: "Jason A. Donenfeld" To: x86@kernel.org, linux-kernel@vger.kernel.org Cc: "Jason A. Donenfeld" , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H . Peter Anvin" Subject: [PATCH] x86/espfix: Use get_random_long() rather than archrandom Date: Sat, 29 Oct 2022 02:26:13 +0200 Message-Id: <20221029002613.143153-1-Jason@zx2c4.com> MIME-Version: 1.0 X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_HI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1747980093259166765?= X-GMAIL-MSGID: =?utf-8?q?1747980093259166765?= A call is made to arch_get_random_longs() and rdtsc(), rather than just using get_random_long(), because this was written during a time when very early boot would give abysmal entropy. These days, a call to get_random_long() at early boot will incorporate RDRAND, RDTSC, and more, without having to do anything bespoke. In fact, the situation is now such that on the majority of x86 systems, the pool actually is initialized at this point, even though it doesn't need to be for get_random_long() to still return something better than what this function currently does. So simplify this to just call get_random_long() instead. Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Cc: Dave Hansen Cc: H. Peter Anvin Signed-off-by: Jason A. Donenfeld --- arch/x86/kernel/espfix_64.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/arch/x86/kernel/espfix_64.c b/arch/x86/kernel/espfix_64.c index 9417d5aa7305..16f9814c9be0 100644 --- a/arch/x86/kernel/espfix_64.c +++ b/arch/x86/kernel/espfix_64.c @@ -94,17 +94,7 @@ static inline unsigned long espfix_base_addr(unsigned int cpu) static void init_espfix_random(void) { - unsigned long rand; - - /* - * This is run before the entropy pools are initialized, - * but this is hopefully better than nothing. - */ - if (!arch_get_random_longs(&rand, 1)) { - /* The constant is an arbitrary large prime */ - rand = rdtsc(); - rand *= 0xc345c6b72fd16123UL; - } + unsigned long rand = get_random_long(); slot_random = rand % ESPFIX_STACKS_PER_PAGE; page_random = (rand / ESPFIX_STACKS_PER_PAGE)