linux-doc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Deepak Gupta <debug@rivosinc.com>
To: Florian Weimer <fweimer@redhat.com>
Cc: Charles Mirabile <cmirabil@redhat.com>,
	pjw@kernel.org, Liam.Howlett@oracle.com, a.hindborg@kernel.org,
	akpm@linux-foundation.org, alex.gaynor@gmail.com,
	alexghiti@rivosinc.com, aliceryhl@google.com,
	alistair.francis@wdc.com, andybnac@gmail.com,
	aou@eecs.berkeley.edu, arnd@arndb.de, atishp@rivosinc.com,
	bjorn3_gh@protonmail.com, boqun.feng@gmail.com, bp@alien8.de,
	brauner@kernel.org, broonie@kernel.org, charlie@rivosinc.com,
	cleger@rivosinc.com, conor+dt@kernel.org, conor@kernel.org,
	corbet@lwn.net, dave.hansen@linux.intel.com, david@redhat.com,
	devicetree@vger.kernel.org, ebiederm@xmission.com,
	evan@rivosinc.com, gary@garyguo.net, hpa@zytor.com,
	jannh@google.com, jim.shu@sifive.com, kees@kernel.org,
	kito.cheng@sifive.com, krzk+dt@kernel.org,
	linux-arch@vger.kernel.org, linux-doc@vger.kernel.org,
	linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org, linux-mm@kvack.org,
	linux-riscv@lists.infradead.org, lorenzo.stoakes@oracle.com,
	lossin@kernel.org, mingo@redhat.com, ojeda@kernel.org,
	oleg@redhat.com, palmer@dabbelt.com, paul.walmsley@sifive.com,
	peterz@infradead.org, richard.henderson@linaro.org,
	rick.p.edgecombe@intel.com, robh@kernel.org,
	rust-for-linux@vger.kernel.org, samitolvanen@google.com,
	shuah@kernel.org, tglx@linutronix.de, tmgross@umich.edu,
	vbabka@suse.cz, x86@kernel.org, zong.li@sifive.com
Subject: Re: [PATCH v19 00/27] riscv control-flow integrity for usermode
Date: Thu, 2 Oct 2025 09:45:40 -0700	[thread overview]
Message-ID: <aN6sNFBzx8NPU3Th@debug.ba.rivosinc.com> (raw)
In-Reply-To: <lhuwm5dh6hf.fsf@oldenburg.str.redhat.com>

On Thu, Oct 02, 2025 at 01:45:48PM +0200, Florian Weimer wrote:
>* Deepak Gupta:
>
>> On Tue, Sep 30, 2025 at 11:20:32AM +0200, Florian Weimer wrote:
>>>* Deepak Gupta:
>>>
>>>> In case of shadow stack, it similar situation. If enabled compiler
>>>> decides to insert sspush and sspopchk. They necessarily won't be
>>>> prologue or epilogue but somewhere in function body as deemed fit by
>>>> compiler, thus increasing the complexity of runtime patching.
>>>>
>>>> More so, here are wishing for kernel to do this patching for usermode
>>>> vDSO when there is no guarantee of such of rest of usermode (which if
>>>> was compiled with shadow stack would have faulted before vDSO's
>>>> sspush/sspopchk if ran on pre-zimop hardware)
>>>
>>>I think this capability is desirable so that you can use a distribution
>>>kernel during CFI userspace bringup.
>>
>> I didn't get it, can you elaborate more.
>>
>> Why having kernel carry two vDSO (one with shadow stack and one without) would
>> be required to for CFI userspace bringup?
>>
>> If Distro is compiling for RVA23 CONFIG_RISCV_USERCFI has to be selected yes,
>> kernel can have vDSO with shadow stack. Distro can light this option only when
>> its compiling entire distro for RVA23.
>
>I think it boils down to whether you want CFI bringup contributions from
>people who do not want to or cannot build their own custom RVA23
>kernels.

How will they contribute to CFI bringup without having a CFI compiled usersapce?
If their userspace is compiled with shadow stack instructions and they can't take
this userspace to old hardware else it'll start faulting as soon as control is
given to userspace (first sspush or sspopcheck in userspace).

>
>Another use case would be running container images with CFI on a
>distribution kernel which supports pre-RVA23 hardware.

Container image with CFI will have glibc and ld (and all other userspace) also
compiled with shadow stack instructions in it. As soon as you take this
container image to a pre-RVA23 hardware, you won't even reach vDSO. It'll break
much before that, unless kernel is taking a trap on all sspush/sspopchk
instructions in prologue/epilogue of functions in userspace (glibc, ld, etc)

>
>Thanks,
>Florian
>

      reply	other threads:[~2025-10-02 16:45 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-31 23:19 [PATCH v19 00/27] riscv control-flow integrity for usermode Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 01/27] mm: VM_SHADOW_STACK definition for riscv Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 02/27] dt-bindings: riscv: zicfilp and zicfiss in dt-bindings (extensions.yaml) Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 03/27] riscv: zicfiss / zicfilp enumeration Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 04/27] riscv: zicfiss / zicfilp extension csr and bit definitions Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 05/27] riscv: usercfi state for task and save/restore of CSR_SSP on trap entry/exit Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 06/27] riscv/mm : ensure PROT_WRITE leads to VM_READ | VM_WRITE Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 07/27] riscv/mm: manufacture shadow stack pte Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 08/27] riscv/mm: teach pte_mkwrite to manufacture shadow stack PTEs Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 09/27] riscv/mm: write protect and shadow stack Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 10/27] riscv/mm: Implement map_shadow_stack() syscall Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 11/27] riscv/shstk: If needed allocate a new shadow stack on clone Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 12/27] riscv: Implements arch agnostic shadow stack prctls Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 13/27] prctl: arch-agnostic prctl for indirect branch tracking Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 14/27] riscv: Implements arch agnostic indirect branch tracking prctls Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 15/27] riscv/traps: Introduce software check exception and uprobe handling Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 16/27] riscv: signal: abstract header saving for setup_sigcontext Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 17/27] riscv/signal: save and restore of shadow stack for signal Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 18/27] riscv/kernel: update __show_regs to print shadow stack register Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 19/27] riscv/ptrace: riscv cfi status and state via ptrace and in core files Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 20/27] riscv/hwprobe: zicfilp / zicfiss enumeration in hwprobe Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 21/27] riscv: kernel command line option to opt out of user cfi Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 22/27] riscv: enable kernel access to shadow stack memory via FWFT sbi call Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 23/27] arch/riscv: compile vdso with landing pad and shadow stack note Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 24/27] riscv: create a config for shadow stack and landing pad instr support Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 25/27] riscv: Documentation for landing pad / indirect branch tracking Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 26/27] riscv: Documentation for shadow stack on riscv Deepak Gupta
2025-07-31 23:19 ` [PATCH v19 27/27] kselftest/riscv: kselftest for user mode cfi Deepak Gupta
2025-08-01  1:09 ` [PATCH v19 00/27] riscv control-flow integrity for usermode Benjamin LaHaise
2025-08-06 17:15 ` patchwork-bot+linux-riscv
2025-08-07 12:28   ` Mark Brown
2025-08-08  8:23     ` Deepak Gupta
2025-08-08 11:48       ` Mark Brown
2025-08-08 17:20         ` Deepak Gupta
2025-09-24 14:36 ` Paul Walmsley
2025-09-24 18:40   ` Deepak Gupta
2025-09-25 12:30     ` Andy Chiu
2025-09-25 14:30       ` Deepak Gupta
2025-09-30 11:15     ` Florian Weimer
2025-10-01  0:13       ` Deepak Gupta
2025-09-26 19:29   ` Charles Mirabile
2025-09-26 19:52     ` Charles Mirabile
2025-09-26 20:03       ` Deepak Gupta
2025-09-26 19:57     ` Deepak Gupta
2025-09-26 20:28       ` Charles Mirabile
2025-09-26 21:07         ` Deepak Gupta
2025-09-30  9:20           ` Florian Weimer
2025-09-30 23:48             ` Deepak Gupta
2025-10-02 11:45               ` Florian Weimer
2025-10-02 16:45                 ` Deepak Gupta [this message]

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=aN6sNFBzx8NPU3Th@debug.ba.rivosinc.com \
    --to=debug@rivosinc.com \
    --cc=Liam.Howlett@oracle.com \
    --cc=a.hindborg@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=alex.gaynor@gmail.com \
    --cc=alexghiti@rivosinc.com \
    --cc=aliceryhl@google.com \
    --cc=alistair.francis@wdc.com \
    --cc=andybnac@gmail.com \
    --cc=aou@eecs.berkeley.edu \
    --cc=arnd@arndb.de \
    --cc=atishp@rivosinc.com \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun.feng@gmail.com \
    --cc=bp@alien8.de \
    --cc=brauner@kernel.org \
    --cc=broonie@kernel.org \
    --cc=charlie@rivosinc.com \
    --cc=cleger@rivosinc.com \
    --cc=cmirabil@redhat.com \
    --cc=conor+dt@kernel.org \
    --cc=conor@kernel.org \
    --cc=corbet@lwn.net \
    --cc=dave.hansen@linux.intel.com \
    --cc=david@redhat.com \
    --cc=devicetree@vger.kernel.org \
    --cc=ebiederm@xmission.com \
    --cc=evan@rivosinc.com \
    --cc=fweimer@redhat.com \
    --cc=gary@garyguo.net \
    --cc=hpa@zytor.com \
    --cc=jannh@google.com \
    --cc=jim.shu@sifive.com \
    --cc=kees@kernel.org \
    --cc=kito.cheng@sifive.com \
    --cc=krzk+dt@kernel.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=lorenzo.stoakes@oracle.com \
    --cc=lossin@kernel.org \
    --cc=mingo@redhat.com \
    --cc=ojeda@kernel.org \
    --cc=oleg@redhat.com \
    --cc=palmer@dabbelt.com \
    --cc=paul.walmsley@sifive.com \
    --cc=peterz@infradead.org \
    --cc=pjw@kernel.org \
    --cc=richard.henderson@linaro.org \
    --cc=rick.p.edgecombe@intel.com \
    --cc=robh@kernel.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=samitolvanen@google.com \
    --cc=shuah@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=tmgross@umich.edu \
    --cc=vbabka@suse.cz \
    --cc=x86@kernel.org \
    --cc=zong.li@sifive.com \
    /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).