Skip to content

Commit 7212b37

Browse files
committed
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
1 parent d995dc9 commit 7212b37

File tree

3 files changed

+7
-1
lines changed

3 files changed

+7
-1
lines changed

sys/compat/freebsd32/freebsd32.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,7 @@ struct kinfo_proc32 {
419419
uint32_t ki_kstack;
420420
uint32_t ki_udata;
421421
uint32_t ki_tdaddr;
422+
uint32_t ki_uerrmsg;
422423
uint32_t ki_spareptrs[KI_NSPARE_PTR]; /* spare room for growth */
423424
int ki_sparelongs[KI_NSPARE_LONG];
424425
int ki_sflag;

sys/kern/kern_proc.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1348,6 +1348,9 @@ fill_kinfo_thread(struct thread *td, struct kinfo_proc *kp, int preferthread)
13481348
thread_unlock(td);
13491349
if (preferthread)
13501350
PROC_STATUNLOCK(p);
1351+
1352+
if ((td->td_pflags & TDP2_UEXTERR) != 0)
1353+
kp->ki_uerrmsg = td->td_exterr_ptr;
13511354
}
13521355

13531356
/*
@@ -1503,6 +1506,7 @@ freebsd32_kinfo_proc_out(const struct kinfo_proc *ki, struct kinfo_proc32 *ki32)
15031506
PTRTRIM_CP(*ki, *ki32, ki_tdaddr);
15041507
CP(*ki, *ki32, ki_sflag);
15051508
CP(*ki, *ki32, ki_tdflags);
1509+
PTRTRIM_CP(*ki, *ki32, ki_uerrmsg);
15061510
}
15071511
#endif
15081512

sys/sys/user.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@
8686
*/
8787
#define KI_NSPARE_INT 2
8888
#define KI_NSPARE_LONG 12
89-
#define KI_NSPARE_PTR 5
89+
#define KI_NSPARE_PTR 4
9090

9191
#ifndef _KERNEL
9292
#ifndef KINFO_PROC_SIZE
@@ -212,6 +212,7 @@ struct kinfo_proc {
212212
* That way the spare room from both arrays will remain contiguous.
213213
*/
214214
struct pwddesc *ki_pd; /* pointer to process paths info */
215+
void *ki_uerrmsg; /* address of the ext err msg place */
215216
void *ki_spareptrs[KI_NSPARE_PTR]; /* spare room for growth */
216217
long ki_sparelongs[KI_NSPARE_LONG]; /* spare room for growth */
217218
long ki_sflag; /* PS_* flags */

0 commit comments

Comments
 (0)