On Sat, 16 Sep 2023, Helge Deller wrote:
> On 9/16/23 15:52, Mikulas Patocka wrote:
> > The code in setup_rt_frame reads two words at haddr, but locks only one.
> > This patch fixes it to lock both.
> >
> > Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
> >
> > ---
> > linux-user/hppa/signal.c | 5 ++---
> > 1 file changed, 2 insertions(+), 3 deletions(-)
> >
> > Index: qemu/linux-user/hppa/signal.c
> > ===================================================================
> > --- qemu.orig/linux-user/hppa/signal.c
> > +++ qemu/linux-user/hppa/signal.c
> > @@ -149,12 +149,11 @@ void setup_rt_frame(int sig, struct targ
> > target_ulong *fdesc, dest;
> >
> > haddr &= -4;
> > - if (!lock_user_struct(VERIFY_READ, fdesc, haddr, 1)) {
> > + if (!(fdesc = lock_user(VERIFY_READ, haddr, 2 *
> > sizeof(target_ulong), 1)))
> > goto give_sigsegv;
> > - }
>
> Patch is Ok, but I think the qemu coding style is to keep the { } braces, even
> if they are unnecessary (as in this case).
>
> Acked-by: Helge Deller <deller@gmx.de>
OK, here I resend it:
From: Mikulas Patocka <mpatocka@redhat.com>
The code in setup_rt_frame reads two words at haddr, but locks only one.
This patch fixes it to lock both.
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Acked-by: Helge Deller <deller@gmx.de>
---
linux-user/hppa/signal.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: qemu/linux-user/hppa/signal.c
===================================================================
--- qemu.orig/linux-user/hppa/signal.c
+++ qemu/linux-user/hppa/signal.c
@@ -149,12 +149,12 @@ void setup_rt_frame(int sig, struct targ
target_ulong *fdesc, dest;
haddr &= -4;
- if (!lock_user_struct(VERIFY_READ, fdesc, haddr, 1)) {
+ if (!(fdesc = lock_user(VERIFY_READ, haddr, 2 * sizeof(target_ulong), 1))) {
goto give_sigsegv;
}
__get_user(dest, fdesc);
__get_user(env->gr[19], fdesc + 1);
- unlock_user_struct(fdesc, haddr, 1);
+ unlock_user(fdesc, haddr, 0);
haddr = dest;
}
env->iaoq_f = haddr;