git: f6000e9dd934 - main - kern/kern_proc.c: do not throw out read data in get_ps_strings()

Konstantin Belousov <[email protected]>
Newsgroups gmane.os.freebsd.devel.cvs.src
Message-ID <6a7f27d1.3d5c0.4f6aa7b0__12684.5008506038$1786718207$gmane$org@gitrepo.freebsd.org>
The branch main has been updated by kib:

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

commit f6000e9dd934db9fefc31eaa07a7d8fa9277484e
Author:     Konstantin Belousov <[email protected]>
AuthorDate: 2026-08-14 05:23:22 +0000
Commit:     Konstantin Belousov <[email protected]>
CommitDate: 2026-08-14 14:35:38 +0000

    kern/kern_proc.c: do not throw out read data in get_ps_strings()
    
    Since vmspace_iop()/proc_readmem() might return -1 on error from
    vmspace_rwmem(), account for this and stop reading but return already
    accumulated data if any, instead of returning an error.
    
    PR:     297512
    Reported and tested by: Stéphane D'Alu <[email protected]>
    Reviewed by:    markj
    Fixes:  e1b0d051bbf7 ("proc: Allow to make proc_rwmem() operate on a consistent address space")
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
    Differential revision:  https://reviews.freebsd.org/D58838
---
 sys/kern/kern_proc.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c
index 41e5b6594981..6489feca99fc 100644
--- a/sys/kern/kern_proc.c
+++ b/sys/kern/kern_proc.c
@@ -2064,8 +2064,11 @@ get_ps_strings(struct thread *td, struct proc *p, struct sbuf *sb,
 		for (sptr = proc_vector[i]; ; sptr += GET_PS_STRINGS_CHUNK_SZ) {
 			error = proc_read_string(td, vm, sptr, pss_string,
 			    sizeof(pss_string));
-			if (error != 0)
+			if (error != 0) {
+				if (done != 0)
+					error = 0;
 				goto done;
+			}
 			len = strnlen(pss_string, GET_PS_STRINGS_CHUNK_SZ);
 			if (done + len >= nchr)
 				len = nchr - done - 1;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.