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:	e1b0d051bb ("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
This commit is contained in:
Konstantin Belousov committed 2026-08-14 17:35:38 +03:00
1 parent 01d4e3c1d3
commit f6000e9dd9
1 file changed
+4 -1
+4 -1
View File
@@ -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;