* [PATCH v2] bsd-user/signal.c: Only copy the _capsicum for FreeBSD_version > 1400026
@ 2022-02-01 21:28 Warner Losh
2022-02-01 21:40 ` Richard Henderson
0 siblings, 1 reply; 3+ messages in thread
From: Warner Losh @ 2022-02-01 21:28 UTC (permalink / raw)
To: qemu-devel
Cc: alex.bennee, Kyle Evans, richard.henderson, Warner Losh, Peter Maydell
The capsicum signal stuff is new with FreeBSD 14, rev 1400026, so only
define QEMU_SI_CAPSICUM there. Only copy _capsicum when QEMU_SI_CAPSICUM
is defined. Default to no info being passed for signals we make no guess
about.
Signed-off-by: Warner Losh <imp@bsdimp.com>
---
bsd-user/signal-common.h | 5 +++++
bsd-user/signal.c | 5 +++++
2 files changed, 10 insertions(+)
diff --git a/bsd-user/signal-common.h b/bsd-user/signal-common.h
index 7ff8e8f2e40..6f90345bb2a 100644
--- a/bsd-user/signal-common.h
+++ b/bsd-user/signal-common.h
@@ -59,12 +59,17 @@ void target_to_host_sigset(sigset_t *d, const target_sigset_t *s);
* For FreeBSD, we have si_pid, si_uid, si_status, and si_addr always. Linux and
* {Open,Net}BSD have a different approach (where their reason field is larger,
* but whose siginfo has fewer fields always).
+ *
+ * QEMU_SI_CAPSICUM is currently only FreeBSD 14 current only, so only define
+ * it where _capsicum is available.
*/
#define QEMU_SI_NOINFO 0 /* nothing other than si_signo valid */
#define QEMU_SI_FAULT 1 /* _fault is valid in _reason */
#define QEMU_SI_TIMER 2 /* _timer is valid in _reason */
#define QEMU_SI_MESGQ 3 /* _mesgq is valid in _reason */
#define QEMU_SI_POLL 4 /* _poll is valid in _reason */
+#if defined(__FreeBSD_version) && __FreeBSD_version >= 1400026
#define QEMU_SI_CAPSICUM 5 /* _capsicum is valid in _reason */
+#endif
#endif
diff --git a/bsd-user/signal.c b/bsd-user/signal.c
index ad22ba9d90d..0bc6d2edbd9 100644
--- a/bsd-user/signal.c
+++ b/bsd-user/signal.c
@@ -222,6 +222,7 @@ static inline void host_to_target_siginfo_noswap(target_siginfo_t *tinfo,
* We have to go based on the signal number now to figure out
* what's valid.
*/
+ si_type = QEMU_SI_NOINFO;
if (has_trapno(sig)) {
tinfo->_reason._fault._trapno = info->_reason._fault._trapno;
si_type = QEMU_SI_FAULT;
@@ -241,11 +242,13 @@ static inline void host_to_target_siginfo_noswap(target_siginfo_t *tinfo,
* capsicum is somewhere between weak and non-existant, but if we get
* one, then we know what to save.
*/
+#ifdef QEMU_SI_CAPSICUM
if (sig == TARGET_SIGTRAP) {
tinfo->_reason._capsicum._syscall =
info->_reason._capsicum._syscall;
si_type = QEMU_SI_CAPSICUM;
}
+#endif
break;
}
tinfo->si_code = deposit32(si_code, 24, 8, si_type);
@@ -295,10 +298,12 @@ static void tswap_siginfo(target_siginfo_t *tinfo, const target_siginfo_t *info)
/* Note: Not generated on FreeBSD */
__put_user(info->_reason._poll._band, &tinfo->_reason._poll._band);
break;
+#ifdef QEMU_SI_CAPSICUM
case QEMU_SI_CAPSICUM:
__put_user(info->_reason._capsicum._syscall,
&tinfo->_reason._capsicum._syscall);
break;
+#endif
default:
g_assert_not_reached();
}
--
2.33.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v2] bsd-user/signal.c: Only copy the _capsicum for FreeBSD_version > 1400026
2022-02-01 21:28 [PATCH v2] bsd-user/signal.c: Only copy the _capsicum for FreeBSD_version > 1400026 Warner Losh
@ 2022-02-01 21:40 ` Richard Henderson
2022-02-01 22:56 ` Warner Losh
0 siblings, 1 reply; 3+ messages in thread
From: Richard Henderson @ 2022-02-01 21:40 UTC (permalink / raw)
To: Warner Losh, qemu-devel; +Cc: Kyle Evans, alex.bennee, Peter Maydell
On 2/2/22 08:28, Warner Losh wrote:
> The capsicum signal stuff is new with FreeBSD 14, rev 1400026, so only
> define QEMU_SI_CAPSICUM there. Only copy _capsicum when QEMU_SI_CAPSICUM
> is defined. Default to no info being passed for signals we make no guess
> about.
>
> Signed-off-by: Warner Losh<imp@bsdimp.com>
> ---
> bsd-user/signal-common.h | 5 +++++
> bsd-user/signal.c | 5 +++++
> 2 files changed, 10 insertions(+)
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
r~
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2] bsd-user/signal.c: Only copy the _capsicum for FreeBSD_version > 1400026
2022-02-01 21:40 ` Richard Henderson
@ 2022-02-01 22:56 ` Warner Losh
0 siblings, 0 replies; 3+ messages in thread
From: Warner Losh @ 2022-02-01 22:56 UTC (permalink / raw)
To: Richard Henderson
Cc: Kyle Evans, Alex Bennée, QEMU Developers, Peter Maydell
[-- Attachment #1: Type: text/plain, Size: 634 bytes --]
On Tue, Feb 1, 2022 at 2:40 PM Richard Henderson <
richard.henderson@linaro.org> wrote:
> On 2/2/22 08:28, Warner Losh wrote:
> > The capsicum signal stuff is new with FreeBSD 14, rev 1400026, so only
> > define QEMU_SI_CAPSICUM there. Only copy _capsicum when QEMU_SI_CAPSICUM
> > is defined. Default to no info being passed for signals we make no guess
> > about.
> >
> > Signed-off-by: Warner Losh<imp@bsdimp.com>
> > ---
> > bsd-user/signal-common.h | 5 +++++
> > bsd-user/signal.c | 5 +++++
> > 2 files changed, 10 insertions(+)
>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
>
thanks!
> r~
>
[-- Attachment #2: Type: text/html, Size: 1325 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-02-02 3:24 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-01 21:28 [PATCH v2] bsd-user/signal.c: Only copy the _capsicum for FreeBSD_version > 1400026 Warner Losh
2022-02-01 21:40 ` Richard Henderson
2022-02-01 22:56 ` Warner Losh
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.