linux-arch.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Yu, Yu-cheng" <yu-cheng.yu@intel.com>
To: Dave Hansen <dave.hansen@intel.com>, Andy Lutomirski <luto@kernel.org>
Cc: Dave Martin <Dave.Martin@arm.com>,
	"H.J. Lu" <hjl.tools@gmail.com>,
	Florian Weimer <fweimer@redhat.com>, X86 ML <x86@kernel.org>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>,
	LKML <linux-kernel@vger.kernel.org>,
	"open list:DOCUMENTATION" <linux-doc@vger.kernel.org>,
	Linux-MM <linux-mm@kvack.org>,
	linux-arch <linux-arch@vger.kernel.org>,
	Linux API <linux-api@vger.kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Balbir Singh <bsingharora@gmail.com>,
	Borislav Petkov <bp@alien8.de>,
	Cyrill Gorcunov <gorcunov@gmail.com>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	Eugene Syromiatnikov <esyr@redhat.com>,
	Jann Horn <jannh@google.com>, Jonathan Corbet <corbet@lwn.net>,
	Kees Cook <keescook@chromium.org>,
	Mike Kravetz <mike.kravetz@oracle.com>,
	Nadav Amit <nadav.amit@gmail.com>,
	Oleg Nesterov <oleg@redhat.com>, Pavel Machek <pavel@ucw.cz>,
	Peter Zijlstra <peterz@infradead.org>,
	Randy Dunlap <rdunlap@infradead.org>,
	"Ravi V. Shankar" <ravi.v.shankar@intel.com>,
	Vedvyas Shanbhogue <vedvyas.shanbhogue@intel.com>,
	Weijiang Yang <weijiang.yang@intel.com>
Subject: Re: [PATCH v11 25/25] x86/cet/shstk: Add arch_prctl functions for shadow stack
Date: Tue, 8 Sep 2020 11:25:20 -0700	[thread overview]
Message-ID: <6e1e22a5-1b7f-2783-351e-c8ed2d4893b8@intel.com> (raw)
In-Reply-To: <ed929729-4677-3d3b-6bfd-b379af9272b8@intel.com>

On 9/8/2020 10:57 AM, Dave Hansen wrote:
> On 9/8/20 10:50 AM, Yu, Yu-cheng wrote:
>> What about this:
>>
>> - Do not add any new syscall or arch_prctl for creating a new shadow stack.
>>
>> - Add a new arch_prctl that can turn an anonymous mapping to a shadow
>> stack mapping.
>>
>> This allows the application to do whatever is necessary.  It can even
>> allow GDB or JIT code to create or fix a call stack.
> 
> Fine with me.  But, it's going to effectively be
> 
> 	arch_prctl(PR_CONVERT_TO_SHS..., addr, len);
> 
> when it could just as easily be:
> 
> 	madvise(addr, len, MADV_SHSTK...);
> 
> Or a new syscall.  The only question in my mind is whether we want to do
> something generic that we can use for other similar things in the
> future, like:
> 
> 	madvise2(addr, len, flags, MADV2_SHSTK...);
> 
> I don't really feel strongly about it, though.  Could you please share
> your logic on why you want a prctl() as opposed to a whole new syscall?
> 

A new syscall is more intrusive, I think.  When creating a new shadow 
stack, the kernel also installs a restore token on the top of the new 
shadow stack, and it is somewhat x86-specific.  So far no other arch's 
need this.

Yes, madvise is better if the kernel only needs to change the mapping. 
The application itself can create the restore token before calling 
madvise().

  reply	other threads:[~2020-09-08 18:25 UTC|newest]

Thread overview: 89+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-25  0:25 [PATCH v11 00/25] Control-flow Enforcement: Shadow Stack Yu-cheng Yu
2020-08-25  0:25 ` [PATCH v11 01/25] Documentation/x86: Add CET description Yu-cheng Yu
2020-08-25  0:25 ` [PATCH v11 02/25] x86/cpufeatures: Add CET CPU feature flags for Control-flow Enforcement Technology (CET) Yu-cheng Yu
2020-08-25  0:25 ` [PATCH v11 03/25] x86/fpu/xstate: Introduce CET MSR XSAVES supervisor states Yu-cheng Yu
2020-08-25  0:25 ` [PATCH v11 04/25] x86/cet: Add control-protection fault handler Yu-cheng Yu
2020-08-25  0:25 ` [PATCH v11 05/25] x86/cet/shstk: Add Kconfig option for user-mode Shadow Stack Yu-cheng Yu
2020-08-25  0:25 ` [PATCH v11 06/25] x86/mm: Change _PAGE_DIRTY to _PAGE_DIRTY_HW Yu-cheng Yu
2020-08-25  0:25 ` [PATCH v11 07/25] x86/mm: Remove _PAGE_DIRTY_HW from kernel RO pages Yu-cheng Yu
2020-08-25  0:25 ` [PATCH v11 08/25] x86/mm: Introduce _PAGE_COW Yu-cheng Yu
2020-08-25  0:25 ` [PATCH v11 09/25] drm/i915/gvt: Change _PAGE_DIRTY to _PAGE_DIRTY_BITS Yu-cheng Yu
2020-08-25  0:25 ` [PATCH v11 10/25] x86/mm: Update pte_modify for _PAGE_COW Yu-cheng Yu
2020-08-25  0:25 ` [PATCH v11 11/25] x86/mm: Update ptep_set_wrprotect() and pmdp_set_wrprotect() for transition from _PAGE_DIRTY_HW to _PAGE_COW Yu-cheng Yu
2020-08-25  0:25 ` [PATCH v11 12/25] mm: Introduce VM_SHSTK for shadow stack memory Yu-cheng Yu
2020-08-25  0:25 ` [PATCH v11 13/25] x86/mm: Shadow Stack page fault error checking Yu-cheng Yu
2020-08-25  0:25 ` [PATCH v11 14/25] x86/mm: Update maybe_mkwrite() for shadow stack Yu-cheng Yu
2020-08-25  0:25 ` [PATCH v11 15/25] mm: Fixup places that call pte_mkwrite() directly Yu-cheng Yu
2020-08-25  0:25 ` [PATCH v11 16/25] mm: Add guard pages around a shadow stack Yu-cheng Yu
2020-08-25  0:25 ` [PATCH v11 17/25] mm/mmap: Add shadow stack pages to memory accounting Yu-cheng Yu
2020-08-25  0:25 ` [PATCH v11 18/25] mm: Update can_follow_write_pte() for shadow stack Yu-cheng Yu
2020-08-25  0:25 ` [PATCH v11 19/25] mm: Re-introduce do_mmap_pgoff() Yu-cheng Yu
2020-08-25  0:25 ` [PATCH v11 20/25] x86/cet/shstk: User-mode shadow stack support Yu-cheng Yu
2020-08-25  0:25 ` [PATCH v11 21/25] x86/cet/shstk: Handle signals for shadow stack Yu-cheng Yu
2020-08-25  0:25 ` [PATCH v11 22/25] binfmt_elf: Define GNU_PROPERTY_X86_FEATURE_1_AND properties Yu-cheng Yu
2020-08-25  0:25 ` [PATCH v11 23/25] ELF: Introduce arch_setup_elf_property() Yu-cheng Yu
2020-08-25  0:25 ` [PATCH v11 24/25] x86/cet/shstk: Handle thread shadow stack Yu-cheng Yu
2020-08-25  0:25 ` [PATCH v11 25/25] x86/cet/shstk: Add arch_prctl functions for " Yu-cheng Yu
2020-08-25  0:36   ` Andy Lutomirski
2020-08-25 18:43     ` Yu, Yu-cheng
2020-08-25 19:19       ` Dave Hansen
2020-08-25 21:04         ` Yu, Yu-cheng
2020-08-25 23:20           ` Dave Hansen
2020-08-25 23:34             ` Yu, Yu-cheng
2020-08-26 16:46               ` Dave Martin
2020-08-26 16:51                 ` Florian Weimer
2020-08-26 17:04                   ` Andy Lutomirski
2020-08-26 18:49                     ` Yu, Yu-cheng
2020-08-26 19:43                       ` H.J. Lu
2020-08-26 19:57                       ` Dave Hansen
2020-08-27 13:26                         ` H.J. Lu
2020-09-01 10:28                           ` Dave Martin
2020-09-01 17:23                             ` Yu, Yu-cheng
2020-09-01 17:45                               ` Andy Lutomirski
2020-09-01 18:11                                 ` Dave Hansen
2020-09-02 13:58                                   ` Dave Martin
     [not found]                                   ` <46dffdfd-92f8-0f05-6164-945f217b0958@intel.com>
2020-09-08 17:57                                     ` Dave Hansen
2020-09-08 18:25                                       ` Yu, Yu-cheng [this message]
2020-09-09 22:08                                         ` Yu, Yu-cheng
2020-09-09 22:59                                           ` Dave Hansen
2020-09-09 23:07                                             ` Yu, Yu-cheng
2020-09-09 23:11                                               ` Dave Hansen
2020-09-09 23:25                                                 ` Yu, Yu-cheng
2020-09-09 23:29                                                   ` Dave Hansen
2020-09-09 23:45                                                     ` Yu, Yu-cheng
2020-09-11 22:59                                                     ` Yu-cheng Yu
2020-09-14 14:50                                                       ` [NEEDS-REVIEW] " Dave Hansen
2020-09-14 18:31                                                         ` Andy Lutomirski
2020-09-14 20:44                                                           ` Yu, Yu-cheng
2020-09-14 21:14                                                           ` Dave Hansen
2020-09-16 13:52                                                             ` Andy Lutomirski
2020-09-16 19:25                                                               ` Yu, Yu-cheng
2021-09-14  1:33                                                           ` [NEEDS-REVIEW] " Edgecombe, Rick P
2021-09-14  9:53                                                             ` Borislav Petkov
2021-09-20 16:48                                                             ` Andy Lutomirski
2021-09-23 23:32                                                               ` Edgecombe, Rick P
     [not found]                                                         ` <bf2ab309-f8c4-83da-1c0a-5684e5bc5c82@intel.com>
2020-09-15 19:08                                                           ` Yu-cheng Yu
2020-09-15 19:24                                                             ` Dave Hansen
2020-09-15 20:16                                                               ` Yu, Yu-cheng
2020-08-26 17:08                   ` Dave Martin
2020-08-27 13:18                     ` Florian Weimer
2020-08-27 13:28                       ` H.J. Lu
2020-08-27 13:36                         ` Florian Weimer
2020-08-27 14:07                           ` H.J. Lu
2020-08-27 14:08                             ` H.J. Lu
2020-09-01 17:49                               ` Yu, Yu-cheng
2020-09-01 17:50                                 ` Florian Weimer
2020-09-01 17:58                                   ` Yu, Yu-cheng
2020-09-01 18:17                                     ` Florian Weimer
2020-09-01 18:19                                       ` H.J. Lu
2020-09-01 18:24                                       ` Yu, Yu-cheng
2020-08-27 18:13                           ` Yu, Yu-cheng
2020-08-27 18:56                             ` Andy Lutomirski
2020-08-27 19:33                               ` Yu, Yu-cheng
2020-08-27 19:37                               ` H.J. Lu
2020-08-28  1:35                                 ` Andy Lutomirski
2020-08-28  1:44                                   ` H.J. Lu
2020-08-28  6:23                                     ` Florian Weimer
2020-08-28 11:37                                       ` H.J. Lu
2020-08-28 17:39                                         ` Andy Lutomirski
2020-08-28 17:45                                           ` H.J. Lu

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=6e1e22a5-1b7f-2783-351e-c8ed2d4893b8@intel.com \
    --to=yu-cheng.yu@intel.com \
    --cc=Dave.Martin@arm.com \
    --cc=arnd@arndb.de \
    --cc=bp@alien8.de \
    --cc=bsingharora@gmail.com \
    --cc=corbet@lwn.net \
    --cc=dave.hansen@intel.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=esyr@redhat.com \
    --cc=fweimer@redhat.com \
    --cc=gorcunov@gmail.com \
    --cc=hjl.tools@gmail.com \
    --cc=hpa@zytor.com \
    --cc=jannh@google.com \
    --cc=keescook@chromium.org \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=luto@kernel.org \
    --cc=mike.kravetz@oracle.com \
    --cc=mingo@redhat.com \
    --cc=nadav.amit@gmail.com \
    --cc=oleg@redhat.com \
    --cc=pavel@ucw.cz \
    --cc=peterz@infradead.org \
    --cc=ravi.v.shankar@intel.com \
    --cc=rdunlap@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=vedvyas.shanbhogue@intel.com \
    --cc=weijiang.yang@intel.com \
    --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: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).