From: Nick Desaulniers <ndesaulniers@google.com> To: Bill Wendling <morbo@google.com> Cc: Kees Cook <keescook@chromium.org>, Juergen Gross <jgross@suse.com>, "Srivatsa S. Bhat (VMware)" <srivatsa@csail.mit.edu>, Alexey Makhalov <amakhalov@vmware.com>, VMware PV-Drivers Reviewers <pv-drivers@vmware.com>, Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>, Dave Hansen <dave.hansen@linux.intel.com>, "maintainer:X86 ARCHITECTURE (32-BIT AND 64-BIT)" <x86@kernel.org>, "H. Peter Anvin" <hpa@zytor.com>, virtualization@lists.linux-foundation.org, LKML <linux-kernel@vger.kernel.org>, Nathan Chancellor <nathan@kernel.org>, clang-built-linux <llvm@lists.linux.dev>, linux-hardening@vger.kernel.org Subject: Re: [PATCH 2/2] x86/paravirt: add extra clobbers with ZERO_CALL_USED_REGS enabled Date: Tue, 6 Sep 2022 23:00:07 -0700 [thread overview] Message-ID: <CAKwvOdm+kVTrqMrSPHwTa0NrG9qwTcFkGnikjYjk0ctFGBfeRA@mail.gmail.com> (raw) In-Reply-To: <CAGG=3QXpK+bFOSYZkdNNFGzNfgJSSADGTRWYRv6z0vfBAgQvWQ@mail.gmail.com> On Sun, Sep 4, 2022 at 11:02 PM Bill Wendling <morbo@google.com> wrote: > > On Sat, Sep 3, 2022 at 12:18 AM Kees Cook <keescook@chromium.org> wrote: > > > > On Fri, Sep 02, 2022 at 09:37:50PM +0000, Bill Wendling wrote: > > > [...] > > > callq *pv_ops+536(%rip) > > > > Do you know which pv_ops function is this? I can't figure out where > > pte_offset_kernel() gets converted into a pv_ops call.... > > > This one is _paravirt_ident_64, I believe. I think that the original > issue Nathan was seeing was with another seemingly innocuous function. _paravirt_ident_64 is marked noinstr, which makes me suspect that it really needs to not be touched at all by the compiler for these...special features. Maybe the definition of noinstr in include/linux/compiler_types.h should be adding __attribute__((zero_call_used_regs(skip)))? Untested: ``` diff --git a/include/linux/compiler_types.h b/include/linux/compiler_types.h index 4f2a819fd60a..a51ab77e2da8 100644 --- a/include/linux/compiler_types.h +++ b/include/linux/compiler_types.h @@ -226,10 +226,17 @@ struct ftrace_likely_data { #define __no_sanitize_or_inline __always_inline #endif +#ifdef CONFIG_ZERO_CALL_USED_REGS +#define __no_zero_call_used_regs __attribute__((__zero_call_used_reg__(skip))) +#else +#define __no_zero_call_used_regs +#endif + /* Section for code which can't be instrumented at all */ #define noinstr \ noinline notrace __attribute((__section__(".noinstr.text"))) \ - __no_kcsan __no_sanitize_address __no_profile __no_sanitize_coverage + __no_kcsan __no_sanitize_address __no_profile \ + __no_sanitize_coverage __no_zero_call_used_regs #endif /* __KERNEL__ */ ``` Or use __has_attribute in include/linux/compiler_attributes.h. -- Thanks, ~Nick Desaulniers
WARNING: multiple messages have this Message-ID (diff)
From: Nick Desaulniers via Virtualization <virtualization@lists.linux-foundation.org> To: Bill Wendling <morbo@google.com> Cc: Juergen Gross <jgross@suse.com>, "maintainer:X86 ARCHITECTURE \(32-BIT AND 64-BIT\)" <x86@kernel.org>, "H. Peter Anvin" <hpa@zytor.com>, Kees Cook <keescook@chromium.org>, VMware PV-Drivers Reviewers <pv-drivers@vmware.com>, Dave Hansen <dave.hansen@linux.intel.com>, clang-built-linux <llvm@lists.linux.dev>, LKML <linux-kernel@vger.kernel.org>, virtualization@lists.linux-foundation.org, Nathan Chancellor <nathan@kernel.org>, Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>, linux-hardening@vger.kernel.org, Alexey Makhalov <amakhalov@vmware.com>, Thomas Gleixner <tglx@linutronix.de> Subject: Re: [PATCH 2/2] x86/paravirt: add extra clobbers with ZERO_CALL_USED_REGS enabled Date: Tue, 6 Sep 2022 23:00:07 -0700 [thread overview] Message-ID: <CAKwvOdm+kVTrqMrSPHwTa0NrG9qwTcFkGnikjYjk0ctFGBfeRA@mail.gmail.com> (raw) In-Reply-To: <CAGG=3QXpK+bFOSYZkdNNFGzNfgJSSADGTRWYRv6z0vfBAgQvWQ@mail.gmail.com> On Sun, Sep 4, 2022 at 11:02 PM Bill Wendling <morbo@google.com> wrote: > > On Sat, Sep 3, 2022 at 12:18 AM Kees Cook <keescook@chromium.org> wrote: > > > > On Fri, Sep 02, 2022 at 09:37:50PM +0000, Bill Wendling wrote: > > > [...] > > > callq *pv_ops+536(%rip) > > > > Do you know which pv_ops function is this? I can't figure out where > > pte_offset_kernel() gets converted into a pv_ops call.... > > > This one is _paravirt_ident_64, I believe. I think that the original > issue Nathan was seeing was with another seemingly innocuous function. _paravirt_ident_64 is marked noinstr, which makes me suspect that it really needs to not be touched at all by the compiler for these...special features. Maybe the definition of noinstr in include/linux/compiler_types.h should be adding __attribute__((zero_call_used_regs(skip)))? Untested: ``` diff --git a/include/linux/compiler_types.h b/include/linux/compiler_types.h index 4f2a819fd60a..a51ab77e2da8 100644 --- a/include/linux/compiler_types.h +++ b/include/linux/compiler_types.h @@ -226,10 +226,17 @@ struct ftrace_likely_data { #define __no_sanitize_or_inline __always_inline #endif +#ifdef CONFIG_ZERO_CALL_USED_REGS +#define __no_zero_call_used_regs __attribute__((__zero_call_used_reg__(skip))) +#else +#define __no_zero_call_used_regs +#endif + /* Section for code which can't be instrumented at all */ #define noinstr \ noinline notrace __attribute((__section__(".noinstr.text"))) \ - __no_kcsan __no_sanitize_address __no_profile __no_sanitize_coverage + __no_kcsan __no_sanitize_address __no_profile \ + __no_sanitize_coverage __no_zero_call_used_regs #endif /* __KERNEL__ */ ``` Or use __has_attribute in include/linux/compiler_attributes.h. -- Thanks, ~Nick Desaulniers _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
next prev parent reply other threads:[~2022-09-07 6:00 UTC|newest] Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-09-02 21:37 [PATCH 0/2] fix clobbers list with ZERO_CALL_USED_REGS feature Bill Wendling 2022-09-02 21:37 ` [PATCH 1/2] x86/paravirt: clean up typos and grammaros Bill Wendling 2022-09-03 4:28 ` Borislav Petkov 2022-09-03 4:28 ` Borislav Petkov 2022-09-04 2:13 ` Bill Wendling 2022-09-02 21:37 ` [PATCH 2/2] x86/paravirt: add extra clobbers with ZERO_CALL_USED_REGS enabled Bill Wendling 2022-09-03 7:18 ` Kees Cook 2022-09-03 7:18 ` Kees Cook 2022-09-05 6:02 ` Bill Wendling 2022-09-07 6:00 ` Nick Desaulniers [this message] 2022-09-07 6:00 ` Nick Desaulniers via Virtualization 2022-09-07 8:50 ` Peter Zijlstra 2022-09-07 8:50 ` Peter Zijlstra 2022-09-07 23:10 ` Kees Cook 2022-09-07 23:10 ` Kees Cook 2022-09-08 21:16 ` Bill Wendling 2022-09-14 14:40 ` Nathan Chancellor 2022-09-14 15:49 ` Bill Wendling [not found] ` <20220914162149.71271-1-morbo@google.com> 2022-09-15 6:59 ` [PATCH v2 1/1] x86/paravirt: write paravirt ident function in assembly Juergen Gross via Virtualization 2022-09-15 6:59 ` Juergen Gross
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=CAKwvOdm+kVTrqMrSPHwTa0NrG9qwTcFkGnikjYjk0ctFGBfeRA@mail.gmail.com \ --to=ndesaulniers@google.com \ --cc=amakhalov@vmware.com \ --cc=bp@alien8.de \ --cc=dave.hansen@linux.intel.com \ --cc=hpa@zytor.com \ --cc=jgross@suse.com \ --cc=keescook@chromium.org \ --cc=linux-hardening@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=llvm@lists.linux.dev \ --cc=mingo@redhat.com \ --cc=morbo@google.com \ --cc=nathan@kernel.org \ --cc=pv-drivers@vmware.com \ --cc=srivatsa@csail.mit.edu \ --cc=tglx@linutronix.de \ --cc=virtualization@lists.linux-foundation.org \ --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.