diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c --- a/sys/kern/kern_proc.c +++ b/sys/kern/kern_proc.c @@ -2304,6 +2304,7 @@ struct proc *p; vm_map_t map; struct vmspace *vm; + bool guard; name = (int *)arg1; error = pget((pid_t)name[0], PGET_WANTREAD, &p); @@ -2325,6 +2326,7 @@ if (entry->eflags & MAP_ENTRY_IS_SUB_MAP) continue; + bzero(kve, sizeof(*kve)); kve->kve_structsize = sizeof(*kve); @@ -2372,6 +2374,8 @@ if (entry->eflags & MAP_ENTRY_NOCOREDUMP) kve->kve_flags |= KVME_FLAG_NOCOREDUMP; + guard = (entry->eflags & MAP_ENTRY_GUARD) != 0; + last_timestamp = map->timestamp; vm_map_unlock_read(map); @@ -2403,7 +2407,8 @@ vput(vp); } } else { - kve->kve_type = KVME_TYPE_NONE; + kve->kve_type = guard ? KVME_TYPE_GUARD : + KVME_TYPE_NONE; kve->kve_ref_count = 0; kve->kve_shadow_count = 0; } diff --git a/sys/sys/user.h b/sys/sys/user.h --- a/sys/sys/user.h +++ b/sys/sys/user.h @@ -465,6 +465,7 @@ #define KVME_TYPE_DEAD 6 #define KVME_TYPE_SG 7 #define KVME_TYPE_MGTDEVICE 8 +#define KVME_TYPE_GUARD 9 #define KVME_TYPE_UNKNOWN 255 #define KVME_PROT_READ 0x00000001 diff --git a/usr.bin/procstat/procstat.1 b/usr.bin/procstat/procstat.1 --- a/usr.bin/procstat/procstat.1 +++ b/usr.bin/procstat/procstat.1 @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 24, 2020 +.Dd February 13, 2021 .Dt PROCSTAT 1 .Os .Sh NAME @@ -674,6 +674,8 @@ swap .It vn vnode +.It gd +guard (pseudo-type) .El .Pp The following mapping flags may be displayed: diff --git a/usr.bin/procstat/procstat_vm.c b/usr.bin/procstat/procstat_vm.c --- a/usr.bin/procstat/procstat_vm.c +++ b/usr.bin/procstat/procstat_vm.c @@ -155,6 +155,10 @@ str = "md"; lstr = "managed_device"; break; + case KVME_TYPE_GUARD: + str = "gd"; + lstr = "guard"; + break; case KVME_TYPE_UNKNOWN: default: str = "??";