git: 73e3f094faef - main - exterr: enqueue ktrace event on syscall exit instead of at EXTERROR() call

From: Konstantin Belousov <kib_at_FreeBSD.org>
Date: Mon, 28 Jul 2025 16:22:52 UTC
The branch main has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=73e3f094faefea012ce978986c2c5d9e4d417acb

commit 73e3f094faefea012ce978986c2c5d9e4d417acb
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2025-07-28 15:04:53 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2025-07-28 16:22:33 +0000

    exterr: enqueue ktrace event on syscall exit instead of at EXTERROR() call
    
    This restores the feature of EXTERROR() being allowed at any context
    except the interrupt handlers.
    
    Reviewed by:    emaste
    Sponsored by:   The FreeBSD Foundation
    Differential revision:  https://reviews.freebsd.org/D51595
---
 sys/kern/sys_generic.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c
index b472aaea89e6..5606b36f772f 100644
--- a/sys/kern/sys_generic.c
+++ b/sys/kern/sys_generic.c
@@ -2269,6 +2269,7 @@ exterr_copyout(struct thread *td)
 		ue.error = 0;
 		sz = sizeof(ue.error);
 	} else {
+		ktrexterr(td);
 		sz = sizeof(ue) - __offsetof(struct uexterror, error);
 	}
 	error = copyout(&ue.error, uloc, sz);
@@ -2335,7 +2336,6 @@ exterr_set(int eerror, int category, const char *mmsg, uintptr_t pp1,
 		td->td_kexterr.p1 = pp1;
 		td->td_kexterr.p2 = pp2;
 		td->td_kexterr.src_line = line;
-		ktrexterr(td);
 	}
 	return (eerror);
 }