[PATCH v26 10/28] riscv/mm: Implement map_shadow_stack() syscall
Paul Walmsley
pjw at kernel.org
Thu Jan 29 00:42:32 PST 2026
Hi,
On Mon, 26 Jan 2026, Deepak Gupta wrote:
> Can you apply following diff on `allocate_shadow_stack` function in this
> patch.
> This fixes the bug that I earlier mentioned. We shouldn't be returning
> location
> to token and instead return base address of shadow stack. Userspace consumer
> should be determining token location itself. This matches the ABI of other
> arches. Sorry for being late on this.
>
> diff --git a/arch/riscv/kernel/usercfi.c b/arch/riscv/kernel/usercfi.c
> index 27b36034ea85..a8530e6afb1e 100644
> --- a/arch/riscv/kernel/usercfi.c
> +++ b/arch/riscv/kernel/usercfi.c
> @@ -232,7 +232,7 @@ static unsigned long allocate_shadow_stack(unsigned long
> addr, unsigned long siz
> {
> int flags = MAP_ANONYMOUS | MAP_PRIVATE;
> struct mm_struct *mm = current->mm;
> - unsigned long populate, tok_loc = 0;
> + unsigned long populate;
>
> if (addr)
> flags |= MAP_FIXED_NOREPLACE;
> @@ -245,13 +245,11 @@ static unsigned long allocate_shadow_stack(unsigned long
> addr, unsigned long siz
> if (!set_tok || IS_ERR_VALUE(addr))
> goto out;
>
> - if (create_rstor_token(addr + token_offset, &tok_loc)) {
> + if (create_rstor_token(addr + token_offset, NULL)) {
> vm_munmap(addr, size);
> return -EINVAL;
> }
>
> - addr = tok_loc;
> -
> out:
> return addr;
> }
Thanks, this fix has been rolled into the queued patch. The Reviewed-by:s
and Tested-by:s have been dropped.
- Paul
More information about the linux-riscv
mailing list