git: 53a9f161903d - stable/15 - kvm_proclist(): Restore outputting the effective GID

From: Olivier Certner <olce_at_FreeBSD.org>
Date: Thu, 18 Sep 2025 08:52:05 UTC
The branch stable/15 has been updated by olce:

URL: https://cgit.FreeBSD.org/src/commit/?id=53a9f161903d1cc9e0dc11be79a5c84735ab33da

commit 53a9f161903d1cc9e0dc11be79a5c84735ab33da
Author:     Olivier Certner <olce@FreeBSD.org>
AuthorDate: 2025-08-28 14:19:43 +0000
Commit:     Olivier Certner <olce@FreeBSD.org>
CommitDate: 2025-09-18 08:50:30 +0000

    kvm_proclist(): Restore outputting the effective GID
    
    In particular, fixes 'procstat -s -M' (only if there are less than 16
    groups).
    
    Reviewed by:    kib, emaste
    Fixes:          be1f7435ef218b1d ("kern: start tracking cr_gid outside of cr_groups[]")
    MFC after:      9 days
    Sponsored by:   The FreeBSD Foundation
    Differential Revision:  https://reviews.freebsd.org/D52260
    
    (cherry picked from commit 7676df2faeb6dcbf20456574dcd2a7f4ab8fff8a)
---
 lib/libkvm/kvm_proc.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/lib/libkvm/kvm_proc.c b/lib/libkvm/kvm_proc.c
index b2b7c6ecce56..fed483978e62 100644
--- a/lib/libkvm/kvm_proc.c
+++ b/lib/libkvm/kvm_proc.c
@@ -150,13 +150,14 @@ kvm_proclist(kvm_t *kd, int what, int arg, struct proc *p,
 			kp->ki_cr_flags = 0;
 			if (ucred.cr_flags & CRED_FLAG_CAPMODE)
 				kp->ki_cr_flags |= KI_CRF_CAPABILITY_MODE;
-			if (ucred.cr_ngroups > KI_NGROUPS) {
+			if (1 + ucred.cr_ngroups > KI_NGROUPS) {
 				kp->ki_ngroups = KI_NGROUPS;
 				kp->ki_cr_flags |= KI_CRF_GRP_OVERFLOW;
 			} else
-				kp->ki_ngroups = ucred.cr_ngroups;
-			kvm_read(kd, (u_long)ucred.cr_groups, kp->ki_groups,
-			    kp->ki_ngroups * sizeof(gid_t));
+				kp->ki_ngroups = 1 + ucred.cr_ngroups;
+			kp->ki_groups[0] = ucred.cr_gid;
+			kvm_read(kd, (u_long)ucred.cr_groups, kp->ki_groups + 1,
+			    (kp->ki_ngroups - 1) * sizeof(gid_t));
 			if (ucred.cr_prison != NULL) {
 				if (KREAD(kd, (u_long)ucred.cr_prison, &pr)) {
 					_kvm_err(kd, kd->program,