Message ID | 20210428193408.233706-7-richard.henderson@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | linux-user/s390x: some signal fixes | expand |
On 28.04.21 21:33, Richard Henderson wrote: > Using the host address of &frame->sregs is incorrect. > We need the guest address. > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > linux-user/s390x/signal.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/linux-user/s390x/signal.c b/linux-user/s390x/signal.c > index dcc6f7bc02..f8515dd332 100644 > --- a/linux-user/s390x/signal.c > +++ b/linux-user/s390x/signal.c > @@ -142,7 +142,7 @@ void setup_frame(int sig, struct target_sigaction *ka, > > save_sigregs(env, &frame->sregs); > > - __put_user((abi_ulong)(unsigned long)&frame->sregs, &frame->sc.sregs); > + __put_user(frame_addr + offsetof(sigframe, sregs), &frame->sc.sregs); > > /* Set up to return from userspace. If provided, use a stub > already in userspace. */ > Reviewed-by: David Hildenbrand <david@redhat.com> -- Thanks, David / dhildenb
diff --git a/linux-user/s390x/signal.c b/linux-user/s390x/signal.c index dcc6f7bc02..f8515dd332 100644 --- a/linux-user/s390x/signal.c +++ b/linux-user/s390x/signal.c @@ -142,7 +142,7 @@ void setup_frame(int sig, struct target_sigaction *ka, save_sigregs(env, &frame->sregs); - __put_user((abi_ulong)(unsigned long)&frame->sregs, &frame->sc.sregs); + __put_user(frame_addr + offsetof(sigframe, sregs), &frame->sc.sregs); /* Set up to return from userspace. If provided, use a stub already in userspace. */
Using the host address of &frame->sregs is incorrect. We need the guest address. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- linux-user/s390x/signal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.25.1