On Mon, Sep 13, 2021 at 4:05 PM Richard Henderson <
richard.hender...@linaro.org> wrote:

> Remap the faulting address from the host address space into
> the guest address space.
>
> Signed-off-by: Richard Henderson <richard.hender...@linaro.org>
> ---
>  linux-user/signal.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
>

Reviewed-by: Warner Losh <i...@bsdimp.com>

If I'm understanding this right, the FreeBSD code in the bsd-user fork
won't be affected by this change.
(or conversely, it's so far behind the linux stuff that it will need to be
completely
revamped).

Warner


> diff --git a/linux-user/signal.c b/linux-user/signal.c
> index a8faea6f09..73c0f9066b 100644
> --- a/linux-user/signal.c
> +++ b/linux-user/signal.c
> @@ -405,6 +405,15 @@ static inline void
> host_to_target_siginfo_noswap(target_siginfo_t *tinfo,
>              tinfo->_sifields._sigpoll._fd = info->si_fd;
>              si_type = QEMU_SI_POLL;
>              break;
> +        case TARGET_SIGSEGV:
> +        case TARGET_SIGBUS:
> +            /*
> +             * Remap the host address into the target space.
> +             * Even an invalid guest address is still valid for a fault.
> +             */
> +            tinfo->_sifields._sigfault._addr = h2g_nocheck(info->si_addr);
> +            si_type = QEMU_SI_FAULT;
> +            break;
>          default:
>              /* Assume a sigqueue()/mq_notify()/rt_sigqueueinfo() source.
> */
>              tinfo->_sifields._rt._pid = info->si_pid;
> --
> 2.25.1
>
>

Reply via email to