Message ID | 20210601145600.3131040-2-iii@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | linux-user: Let sigaction query SIGKILL/SIGSTOP | expand |
Le 01/06/2021 à 16:55, Ilya Leoshkevich a écrit : > The kernel allows doing this, so let's allow this in qemu as well. > Valgrind relies on this. > > Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> > --- > linux-user/signal.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/linux-user/signal.c b/linux-user/signal.c > index 9016896dcd..bc3431708f 100644 > --- a/linux-user/signal.c > +++ b/linux-user/signal.c > @@ -851,7 +851,11 @@ int do_sigaction(int sig, const struct target_sigaction *act, > > trace_signal_do_sigaction_guest(sig, TARGET_NSIG); > > - if (sig < 1 || sig > TARGET_NSIG || sig == TARGET_SIGKILL || sig == TARGET_SIGSTOP) { > + if (sig < 1 || sig > TARGET_NSIG) { > + return -TARGET_EINVAL; > + } > + > + if (act && (sig == TARGET_SIGKILL || sig == TARGET_SIGSTOP)) { > return -TARGET_EINVAL; > } > > Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Le 01/06/2021 à 16:55, Ilya Leoshkevich a écrit : > The kernel allows doing this, so let's allow this in qemu as well. > Valgrind relies on this. > > Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> > --- > linux-user/signal.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/linux-user/signal.c b/linux-user/signal.c > index 9016896dcd..bc3431708f 100644 > --- a/linux-user/signal.c > +++ b/linux-user/signal.c > @@ -851,7 +851,11 @@ int do_sigaction(int sig, const struct target_sigaction *act, > > trace_signal_do_sigaction_guest(sig, TARGET_NSIG); > > - if (sig < 1 || sig > TARGET_NSIG || sig == TARGET_SIGKILL || sig == TARGET_SIGSTOP) { > + if (sig < 1 || sig > TARGET_NSIG) { > + return -TARGET_EINVAL; > + } > + > + if (act && (sig == TARGET_SIGKILL || sig == TARGET_SIGSTOP)) { > return -TARGET_EINVAL; > } > > Applied to my linux-user-for-6.1 branch. Thanks, Laurent
diff --git a/linux-user/signal.c b/linux-user/signal.c index 9016896dcd..bc3431708f 100644 --- a/linux-user/signal.c +++ b/linux-user/signal.c @@ -851,7 +851,11 @@ int do_sigaction(int sig, const struct target_sigaction *act, trace_signal_do_sigaction_guest(sig, TARGET_NSIG); - if (sig < 1 || sig > TARGET_NSIG || sig == TARGET_SIGKILL || sig == TARGET_SIGSTOP) { + if (sig < 1 || sig > TARGET_NSIG) { + return -TARGET_EINVAL; + } + + if (act && (sig == TARGET_SIGKILL || sig == TARGET_SIGSTOP)) { return -TARGET_EINVAL; }
The kernel allows doing this, so let's allow this in qemu as well. Valgrind relies on this. Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> --- linux-user/signal.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)