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 */