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.
If distro is not compiling for RVA23, then anyways CONFIG_RISCV_USERCFI is by default "N". This would simply build vDSO without shadow stack.
Thanks, Florian