From: Dave Hansen <dave.hansen@linux.intel.com> To: linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org, Dave Hansen <dave.hansen@linux.intel.com>, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, x86@kernel.org, luto@kernel.org Subject: [RFC][PATCH 2/8] x86/fpu: hook up PKRU into signal user ABIs Date: Tue, 22 Jun 2021 15:24:59 -0700 [thread overview] Message-ID: <20210622222459.9C76B034@viggo.jf.intel.com> (raw) In-Reply-To: <20210622222455.E901B5AC@viggo.jf.intel.com> From: Dave Hansen <dave.hansen@linux.intel.com> One nice thing about having PKRU be XSAVE-managed is that it gets naturally exposed into the XSAVE-using ABIs. Now that XSAVE will not be used to manage PKRU, these ABIs need to be manually enabled to deal with PKRU. For signals (the restore_hwregs_from_user() path), it's quite straightforward. restore_hwregs_from_user() will update PKRU in from the user signal buffer. Ensure that PKRU is shuffled into the thread storage. Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: Borislav Petkov <bp@alien8.de> Cc: x86@kernel.org Cc: Andy Lutomirski <luto@kernel.org> --- b/arch/x86/kernel/fpu/signal.c | 7 +++++++ 1 file changed, 7 insertions(+) diff -puN arch/x86/kernel/fpu/signal.c~fpu-sig-stash-pkru arch/x86/kernel/fpu/signal.c --- a/arch/x86/kernel/fpu/signal.c~fpu-sig-stash-pkru 2021-06-22 14:49:07.899051760 -0700 +++ b/arch/x86/kernel/fpu/signal.c 2021-06-22 14:49:07.903051760 -0700 @@ -233,6 +233,13 @@ static int restore_hwregs_from_user(void if (!ret && unlikely(init_bv)) os_xrstor(&init_fpstate.xsave, init_bv); + + /* + * PKRU may have been modified by XRSTOR, + * save the possibly updated value: + */ + current->thread.pkru = read_pkru(); + return ret; } else if (use_fxsr()) { return fxrstor_from_user_sigframe(buf); _
WARNING: multiple messages have this Message-ID (diff)
From: Dave Hansen <dave.hansen@linux.intel.com> To: linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org,Dave Hansen <dave.hansen@linux.intel.com>,tglx@linutronix.de,mingo@redhat.com,bp@alien8.de,x86@kernel.org,luto@kernel.org Subject: [RFC][PATCH 2/8] x86/fpu: hook up PKRU into signal user ABIs Date: Tue, 22 Jun 2021 15:24:59 -0700 [thread overview] Message-ID: <20210622222459.9C76B034@viggo.jf.intel.com> (raw) In-Reply-To: <20210622222455.E901B5AC@viggo.jf.intel.com> From: Dave Hansen <dave.hansen@linux.intel.com> One nice thing about having PKRU be XSAVE-managed is that it gets naturally exposed into the XSAVE-using ABIs. Now that XSAVE will not be used to manage PKRU, these ABIs need to be manually enabled to deal with PKRU. For signals (the restore_hwregs_from_user() path), it's quite straightforward. restore_hwregs_from_user() will update PKRU in from the user signal buffer. Ensure that PKRU is shuffled into the thread storage. Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: Borislav Petkov <bp@alien8.de> Cc: x86@kernel.org Cc: Andy Lutomirski <luto@kernel.org> --- b/arch/x86/kernel/fpu/signal.c | 7 +++++++ 1 file changed, 7 insertions(+) diff -puN arch/x86/kernel/fpu/signal.c~fpu-sig-stash-pkru arch/x86/kernel/fpu/signal.c --- a/arch/x86/kernel/fpu/signal.c~fpu-sig-stash-pkru 2021-06-22 14:49:07.899051760 -0700 +++ b/arch/x86/kernel/fpu/signal.c 2021-06-22 14:49:07.903051760 -0700 @@ -233,6 +233,13 @@ static int restore_hwregs_from_user(void if (!ret && unlikely(init_bv)) os_xrstor(&init_fpstate.xsave, init_bv); + + /* + * PKRU may have been modified by XRSTOR, + * save the possibly updated value: + */ + current->thread.pkru = read_pkru(); + return ret; } else if (use_fxsr()) { return fxrstor_from_user_sigframe(buf); _
next prev parent reply other threads:[~2021-06-22 22:25 UTC|newest] Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-06-22 22:24 [RFC][PATCH 0/8] x86/pkeys: remove PKRU from kernel XSAVE buffer Dave Hansen 2021-06-22 22:24 ` Dave Hansen 2021-06-22 22:24 ` [RFC][PATCH 1/8] x86/pkeys: add PKRU storage outside of task " Dave Hansen 2021-06-22 22:24 ` Dave Hansen 2021-06-22 22:24 ` Dave Hansen [this message] 2021-06-22 22:24 ` [RFC][PATCH 2/8] x86/fpu: hook up PKRU into signal user ABIs Dave Hansen 2021-06-22 22:25 ` [RFC][PATCH 3/8] x86/fpu: separate the setup of xfeatures not in fpstate Dave Hansen 2021-06-22 22:25 ` Dave Hansen 2021-06-22 22:25 ` [RFC][PATCH 4/8] x86/fpu: remove PKRU from FPU user state clearing Dave Hansen 2021-06-22 22:25 ` Dave Hansen 2021-06-22 22:25 ` [RFC][PATCH 5/8] x86/fpu: XSAVE buffer access routine rename Dave Hansen 2021-06-22 22:25 ` Dave Hansen 2021-06-22 22:25 ` [RFC][PATCH 6/8] x86/fpu: update xstate size calculations for non-XSAVE-managed features Dave Hansen 2021-06-22 22:25 ` Dave Hansen 2021-06-22 22:25 ` [RFC][PATCH 7/8] x86/fpu: actually stop using XSAVE on PKRU Dave Hansen 2021-06-22 22:25 ` Dave Hansen 2021-06-22 22:25 ` [RFC][PATCH 8/8] x86/pkeys: remove init_pkru_value variable Dave Hansen 2021-06-22 22:25 ` Dave Hansen
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210622222459.9C76B034@viggo.jf.intel.com \ --to=dave.hansen@linux.intel.com \ --cc=bp@alien8.de \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=luto@kernel.org \ --cc=mingo@redhat.com \ --cc=tglx@linutronix.de \ --cc=x86@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.