linux-arch.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Deepak Gupta <debug@rivosinc.com>
To: Charles Mirabile <cmirabil@redhat.com>
Cc: 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, pjw@kernel.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: Fri, 26 Sep 2025 13:03:49 -0700	[thread overview]
Message-ID: <aNbxpVddsTXL7F6T@debug.ba.rivosinc.com> (raw)
In-Reply-To: <20250926195224.351862-1-cmirabil@redhat.com>

On Fri, Sep 26, 2025 at 03:52:24PM -0400, Charles Mirabile wrote:
>Hi -
>
>Sorry for my previous email, I realized I was mistaken...
>
>On Fri, Sep 26, 2025 at 03:29:19PM -0400, Charles Mirabile wrote:
>> Hi -
>>
>> Hoping that I got everything right with git-send-email so that this is
>> delivered alright...
>>
>> Wanted to jump in to head off a potential talking past one another /
>> miscommunication situation I see here.
>>
>> On Wed, Sep 24, 2025 at 08:36:11AM -0600, Paul Walmsley wrote:
>> > Hi,
>> >
>> > On Thu, 31 Jul 2025, Deepak Gupta wrote:
>> >
>> > [ ... ]
>> >
>> > > vDSO related Opens (in the flux)
>> > > =================================
>> > >
>> > > I am listing these opens for laying out plan and what to expect in future
>> > > patch sets. And of course for the sake of discussion.
>> > >
>> >
>> > [ ... ]
>> >
>> > > How many vDSOs
>> > > ---------------
>> > > Shadow stack instructions are carved out of zimop (may be operations) and if CPU
>> > > doesn't implement zimop, they're illegal instructions. Kernel could be running on
>> > > a CPU which may or may not implement zimop. And thus kernel will have to carry 2
>> > > different vDSOs and expose the appropriate one depending on whether CPU implements
>> > > zimop or not.
>> >
>> > If we merge this series without this, then when CFI is enabled in the
>> > Kconfig, we'll wind up with a non-portable kernel that won't run on older
>> > hardware.  We go to great lengths to enable kernel binary portability
>> > across the presence or absence of other RISC-V extensions, and I think
>> > these CFI extensions should be no different.
>>
>> That is not true, this series does not contain the VDSO changes so it can
>> be merged as is.
>
>Oops... no sorry, it looks like it does. See 19/27. I was misled by the
>cover letter which said to pick that patch separately. I completely agree
>that that needs to not be included if this is to be merged.

Yes I sent another email.

>
>>
>> >
>> > So before considering this for merging, I'd like to see at least an
>> > attempt to implement the dual-vDSO approach (or something equivalent)
>> > where the same kernel binary with CFI enabled can run on both pre-Zimop
>> > and post-Zimop hardware, with the existing userspaces that are common
>> > today.
>>
>> I agree that when the VDSO patches are submitted for inclusion they should
>> be written in a way that avoids limiting the entire kernel to either
>> pre-Zimop or post-Zimop hardware based on the config, but I think it
>> should be quite possible to perform e.g. runtime patching of the VDSO
>> to replace the Zimop instructions with nops if the config is enabled but
>> the hardware does not support Zimop.
>>
>> However, that concern should not hold up this patch series. Raise it again
>> when the VDSO patches are posted.
>
>@Deepak, would it be possible to just resend this without the VDSO patch?

No we can't do that because if cfi is opted yes and user enables it then an
indirect jump to vDSO function will result in a trap to supervisor and then
SIGSEGV.

We can compile vDSO without shadow stack option. That leaves vDSO as the only
object in address space of program open to code re-use gadgets because return
path is not protected with shadow stack (thus dilutes security properties)

>
>Or to rework as I had alluded to to check for the presense of the extension
>and remove the instructions from the VDSO at boot if it is not found?

I have responded to your earlier e-mail on this. TLDR is

If kernel is required to carry two different libraries with a need of patching
it in runtime, while rest of the userspace can't be  patched in runtime. Is it
worth the complexity to enforce on kernel? Because we then will be doing this
for every future extension which takes encodings form zimop space while rest
of the userspace really can't do that.


>
>>
>> >
>> > thanks Deepak,
>> >
>> > - Paul
>>
>> Best - Charlie
>>
>
>Best - Charlie
>

  reply	other threads:[~2025-09-26 20:03 UTC|newest]

Thread overview: 48+ 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 [this message]
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

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=aNbxpVddsTXL7F6T@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=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).