From nobody Sat Jun 6 05:20:01 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4gXRTN13CCz6g00x; Sat, 06 Jun 2026 05:20:24 +0000 (UTC) (envelope-from kib@freebsd.org) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4gXRTM3ZgLz3JkK; Sat, 06 Jun 2026 05:20:23 +0000 (UTC) (envelope-from kib@freebsd.org) Authentication-Results: mx1.freebsd.org; none Received: from tom.home (kib@localhost [127.0.0.1] (may be forged)) by kib.kiev.ua (8.18.1/8.18.1) with ESMTP id 6565K23s098382; Sat, 6 Jun 2026 08:20:05 +0300 (EEST) (envelope-from kib@freebsd.org) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua 6565K23s098382 Received: (from kostik@localhost) by tom.home (8.18.1/8.18.1/Submit) id 6565K10i098381; Sat, 6 Jun 2026 08:20:01 +0300 (EEST) (envelope-from kib@freebsd.org) X-Authentication-Warning: tom.home: kostik set sender to kib@freebsd.org using -f Date: Sat, 6 Jun 2026 08:20:01 +0300 From: Konstantin Belousov To: Andrew Turner Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org, Alex Arslan Subject: Re: git: 5cc3fa098856 - main - arm64: Add exception flag for ksiginfo_t and set in trapsignal Message-ID: References: <6a22f647.45cbd.33bd66e7@gitrepo.freebsd.org> List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <6a22f647.45cbd.33bd66e7@gitrepo.freebsd.org> X-Spam-Status: No, score=-2.9 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham autolearn_force=no version=4.0.2 X-Spam-Checker-Version: SpamAssassin 4.0.2 (2025-08-27) on tom.home X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:6939, ipnet:2001:470::/32, country:US] X-Rspamd-Queue-Id: 4gXRTM3ZgLz3JkK X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated On Fri, Jun 05, 2026 at 04:16:07PM +0000, Andrew Turner wrote: > The branch main has been updated by andrew: > > URL: https://cgit.FreeBSD.org/src/commit/?id=5cc3fa098856cbb8de72d1027c838ef734030445 > > commit 5cc3fa098856cbb8de72d1027c838ef734030445 > Author: Alex Arslan > AuthorDate: 2026-03-19 23:30:03 +0000 > Commit: Andrew Turner > CommitDate: 2026-06-05 16:15:36 +0000 > > arm64: Add exception flag for ksiginfo_t and set in trapsignal > > The `ksiginfo_t` flag `KSI_TRAP` is set both for exceptions and when > copying between userspace and the kernel fails. In the latter case, the > exception syndrome register as captured in `struct trapframe` won't be > valid. That means we can't use `KSI_TRAP` to determine whether `tf_esr` > is valid. This motivates the addition of a new flag, here called > `KSI_EXCEPT`, for specifically identifying signals caused by exceptions. > It is added to `ksi_flags` via `trapsignal`. > > Signed-off-by: Alex Arslan > Reported by: andrew > Pull Request: https://github.com/freebsd/freebsd-src/pull/2053 > --- > sys/arm64/arm64/trap.c | 1 + > sys/sys/signalvar.h | 1 + > 2 files changed, 2 insertions(+) > > diff --git a/sys/arm64/arm64/trap.c b/sys/arm64/arm64/trap.c > index 1178817108e5..3afeb34abd5f 100644 > --- a/sys/arm64/arm64/trap.c > +++ b/sys/arm64/arm64/trap.c > @@ -131,6 +131,7 @@ call_trapsignal(struct thread *td, int sig, int code, void *addr, int trapno) > ksi.ksi_code = code; > ksi.ksi_addr = addr; > ksi.ksi_trapno = trapno; > + ksi.ksi_flags |= KSI_EXCEPT; > trapsignal(td, &ksi); > } > > diff --git a/sys/sys/signalvar.h b/sys/sys/signalvar.h > index 8f181b7beee6..9a4009d269af 100644 > --- a/sys/sys/signalvar.h > +++ b/sys/sys/signalvar.h > @@ -237,6 +237,7 @@ typedef struct ksiginfo { > #define KSI_SIGQ 0x08 /* Generated by sigqueue, might ret EAGAIN. */ > #define KSI_HEAD 0x10 /* Insert into head, not tail. */ > #define KSI_PTRACE 0x20 /* Generated by ptrace. */ > +#define KSI_EXCEPT 0x40 /* Generated by an exception. */ This bit is MD, its proper place is in struct trapframe. That is, trapframe should grow a flags field if it needs some additional information about validity of the members. This is how x86 arches handle its optional content like segment registers, segment bases, and FRED fields in uncommitted changes. I do not see why the MD bit should leak into the ksi. > #define KSI_COPYMASK (KSI_TRAP | KSI_SIGQ | KSI_PTRACE) > > #define KSI_ONQ(ksi) ((ksi)->ksi_sigq != NULL)