Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp1338998ybk; Sat, 16 May 2020 08:12:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyhgiVjiUXpqrh8MEtf6UPu4OXpjLqJ9vfsVSSCGhk71QjBRQXQtv5NKu9L7bOqc5iQfUTk X-Received: by 2002:a17:906:5681:: with SMTP id am1mr8038702ejc.376.1589641937490; Sat, 16 May 2020 08:12:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589641937; cv=none; d=google.com; s=arc-20160816; b=VKAGEMGlWggS0FhqxEXaUBmnGbTxXnMRpm4ee4WYozH+vM1Co3jMzhEhpw8M+YJsOF ntMOutqKwBwzfy6HQ6meSZmmiV6XNJPzNI5Q7TEOkjx7H/WUHiYVUznRVQIIV0SttmDH 8O7oagPZL62tKnM9AW1nyABhuHgyOkcMLR4KtZFh3CCEthm6XvcQOlsllMmA43qPIlRX 44Bbp1XgXLHIXP54uyfaupRWKstePPG6uBIdNxmxdTsnRl4Frcn2KvzQw2g5eGihd45g f5fUjyGTqtC5HtojpYEy/Bqx33Wjw08eEXwJWiz1gxjZLF7vUzotWSPhV39F1cSDgS3G BbEQ== 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 :robot-unsubscribe:robot-id:message-id:mime-version:references :in-reply-to:cc:subject:to:reply-to:from:date; bh=QP9ZgeplUCjp89I2djij6V/HaqReVr/hu5i9V6LFdzI=; b=ct7IUl8SE8zYLPe2OwGSDsQ3wtKkxv7tjen3hqs31Sax4Sp9jBEqT+hX4B5BvH1u7o Rbkjamo+Mp+U7+8yaAInqvilzk6LnSfd/aIcCH23j2Utw5cyO7mHjY8NOoKq2Yz5Q5Ci UmymEb4GGK3NMi4SsAM4jymLqfae0c3R18Cl5qrOWGZUZtc7DAKg7x9JxRvJjGZfcCCI fYSCg4NXJghPJrj0w+7YQU36YsohniLu53xqmHzfFyiuV2RpYeCbHL1a9tbJJ44ZIXyP e42zGsjpVc2EZcy1TFfkMAo5jg75EIziPAYsKE5nNiTDgExVwTLq6qoXPo8Vq98xrlm3 uFTQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i9si3982891edn.487.2020.05.16.08.11.54; Sat, 16 May 2020 08:12:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726981AbgEPPKb (ORCPT + 99 others); Sat, 16 May 2020 11:10:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41076 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726876AbgEPPK3 (ORCPT ); Sat, 16 May 2020 11:10:29 -0400 Received: from Galois.linutronix.de (Galois.linutronix.de [IPv6:2a0a:51c0:0:12e:550::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 388A7C05BD09; Sat, 16 May 2020 08:10:29 -0700 (PDT) Received: from [5.158.153.53] (helo=tip-bot2.lab.linutronix.de) by Galois.linutronix.de with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1jZyS9-0000rP-Uo; Sat, 16 May 2020 17:10:18 +0200 Received: from [127.0.1.1] (localhost [IPv6:::1]) by tip-bot2.lab.linutronix.de (Postfix) with ESMTP id 383DB1C0493; Sat, 16 May 2020 17:10:17 +0200 (CEST) Date: Sat, 16 May 2020 15:10:17 -0000 From: "tip-bot2 for Yu-cheng Yu" Reply-to: linux-kernel@vger.kernel.org To: linux-tip-commits@vger.kernel.org Subject: [tip: x86/fpu] x86/fpu/xstate: Update copy_kernel_to_xregs_err() for supervisor states Cc: "Yu-cheng Yu" , Borislav Petkov , Dave Hansen , x86 , LKML In-Reply-To: <20200512145444.15483-8-yu-cheng.yu@intel.com> References: <20200512145444.15483-8-yu-cheng.yu@intel.com> MIME-Version: 1.0 Message-ID: <158964181711.17951.16653133815092461493.tip-bot2@tip-bot2> X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The following commit has been merged into the x86/fpu branch of tip: Commit-ID: c95473e175dd1234b7440daa6eb2670ebf529653 Gitweb: https://git.kernel.org/tip/c95473e175dd1234b7440daa6eb2670ebf529653 Author: Yu-cheng Yu AuthorDate: Tue, 12 May 2020 07:54:41 -07:00 Committer: Borislav Petkov CommitterDate: Thu, 14 May 2020 16:46:43 +02:00 x86/fpu/xstate: Update copy_kernel_to_xregs_err() for supervisor states The function copy_kernel_to_xregs_err() uses XRSTOR which can work with standard or compacted format without supervisor xstates. However, when supervisor xstates are present, XRSTORS must be used. Fix it by using XRSTORS when supervisor state handling is enabled. I also considered if there were additional cases where XRSTOR might be mistakenly called instead of XRSTORS. There are only three XRSTOR sites in the kernel: 1. copy_kernel_to_xregs_booting(), already switches between XRSTOR and XRSTORS based on X86_FEATURE_XSAVES. 2. copy_user_to_xregs(), which *needs* XRSTOR because it is copying from userspace and must never copy supervisor state with XRSTORS. 3. copy_kernel_to_xregs_err() mistakenly used XRSTOR only. Fix it. [ bp: Massage commit message. ] Signed-off-by: Yu-cheng Yu Signed-off-by: Borislav Petkov Reviewed-by: Dave Hansen Link: https://lkml.kernel.org/r/20200512145444.15483-8-yu-cheng.yu@intel.com --- arch/x86/include/asm/fpu/internal.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/arch/x86/include/asm/fpu/internal.h b/arch/x86/include/asm/fpu/internal.h index a42fcb4..42159f4 100644 --- a/arch/x86/include/asm/fpu/internal.h +++ b/arch/x86/include/asm/fpu/internal.h @@ -400,7 +400,10 @@ static inline int copy_kernel_to_xregs_err(struct xregs_state *xstate, u64 mask) u32 hmask = mask >> 32; int err; - XSTATE_OP(XRSTOR, xstate, lmask, hmask, err); + if (static_cpu_has(X86_FEATURE_XSAVES)) + XSTATE_OP(XRSTORS, xstate, lmask, hmask, err); + else + XSTATE_OP(XRSTOR, xstate, lmask, hmask, err); return err; }