The branch main has been updated by kib:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=7212b37345936899e979c63d0b054e114576faa0

commit 7212b37345936899e979c63d0b054e114576faa0
Author:     Konstantin Belousov <k...@freebsd.org>
AuthorDate: 2025-05-24 03:37:00 +0000
Commit:     Konstantin Belousov <k...@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 */

Reply via email to