Page MenuHomeFreeBSD

systat: Avoid incorrect reallocation in pigs.c
ClosedPublic

Authored by ota_j.email.ne.jp on Mar 17 2021, 12:42 AM.
Tags
None
Referenced Files
F167239599: D29303.id85869.diff
Thu, Aug 20, 6:23 AM
Unknown Object (File)
Sat, Aug 15, 2:07 AM
Unknown Object (File)
Fri, Aug 14, 4:26 PM
Unknown Object (File)
Sat, Aug 1, 9:01 PM
Unknown Object (File)
Fri, Jul 31, 8:10 AM
Unknown Object (File)
Thu, Jul 30, 8:17 AM
Unknown Object (File)
Sun, Jul 26, 3:25 PM
Unknown Object (File)
Sun, Jul 26, 9:39 AM

Details

Summary

Let's say nproc comes back in 3, 1, 2, the reallocation happens on the 3rd
fetch given lastnproc 1 is smaller than nproc 2. However, we reserved 3 slots
and thus don't need to reallocate.

Stop free() even if kvm_getprocs as we can come back but set nprocs = 0.
Check nprocs in showpigs() to ensure not try displaying with kvm_getprocs failed.
Current code can have pt with non-null after kvm_getprocs() failure.

Replace to realloc for simpler operations.

Test Plan

% systat -pigs

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 37885
Build 34774: arc lint + arc unit