git: 7212b3734593 - main - kinfo_proc: report address of extended kernel error structure
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 31 May 2025 19:52:53 UTC
The branch main has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=7212b37345936899e979c63d0b054e114576faa0
commit 7212b37345936899e979c63d0b054e114576faa0
Author: Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2025-05-24 03:37:00 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2025-05-31 19:52:41 +0000
kinfo_proc: report address of extended kernel error structure
Reviewed by: brooks
Sponsored by: The FreeBSD Foundation
MFC after: 2 weeks
Differential revision: https://reviews.freebsd.org/D50483
---
sys/compat/freebsd32/freebsd32.h | 1 +
sys/kern/kern_proc.c | 4 ++++
sys/sys/user.h | 3 ++-
3 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/sys/compat/freebsd32/freebsd32.h b/sys/compat/freebsd32/freebsd32.h
index 9d7a99535288..9d724c93fee7 100644
--- a/sys/compat/freebsd32/freebsd32.h
+++ b/sys/compat/freebsd32/freebsd32.h
@@ -419,6 +419,7 @@ struct kinfo_proc32 {
uint32_t ki_kstack;
uint32_t ki_udata;
uint32_t ki_tdaddr;
+ uint32_t ki_uerrmsg;
uint32_t ki_spareptrs[KI_NSPARE_PTR]; /* spare room for growth */
int ki_sparelongs[KI_NSPARE_LONG];
int ki_sflag;
diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c
index 191143443d42..379fbda619c0 100644
--- a/sys/kern/kern_proc.c
+++ b/sys/kern/kern_proc.c
@@ -1348,6 +1348,9 @@ fill_kinfo_thread(struct thread *td, struct kinfo_proc *kp, int preferthread)
thread_unlock(td);
if (preferthread)
PROC_STATUNLOCK(p);
+
+ if ((td->td_pflags & TDP2_UEXTERR) != 0)
+ kp->ki_uerrmsg = td->td_exterr_ptr;
}
/*
@@ -1503,6 +1506,7 @@ freebsd32_kinfo_proc_out(const struct kinfo_proc *ki, struct kinfo_proc32 *ki32)
PTRTRIM_CP(*ki, *ki32, ki_tdaddr);
CP(*ki, *ki32, ki_sflag);
CP(*ki, *ki32, ki_tdflags);
+ PTRTRIM_CP(*ki, *ki32, ki_uerrmsg);
}
#endif
diff --git a/sys/sys/user.h b/sys/sys/user.h
index 0c443672a3b1..f94a91ca1238 100644
--- a/sys/sys/user.h
+++ b/sys/sys/user.h
@@ -86,7 +86,7 @@
*/
#define KI_NSPARE_INT 2
#define KI_NSPARE_LONG 12
-#define KI_NSPARE_PTR 5
+#define KI_NSPARE_PTR 4
#ifndef _KERNEL
#ifndef KINFO_PROC_SIZE
@@ -212,6 +212,7 @@ struct kinfo_proc {
* That way the spare room from both arrays will remain contiguous.
*/
struct pwddesc *ki_pd; /* pointer to process paths info */
+ void *ki_uerrmsg; /* address of the ext err msg place */
void *ki_spareptrs[KI_NSPARE_PTR]; /* spare room for growth */
long ki_sparelongs[KI_NSPARE_LONG]; /* spare room for growth */
long ki_sflag; /* PS_* flags */