library: eliminate insidious 'LIBPROC_HIDE_KERNEL' bug
When support for the 'LIBPROC_HIDE_KERNEL' environment variable was introduced, a deficiency was present that allowed any rejected proc_t (i.e. a kworker thread) to preserve the strdup'd 'cmd' value. That residual value would prevent stat2proc or status2proc from updating a cmd field with the proper program name for some tasks. This patch just ensures a proc_t is freshened whenever it has been rejected due to an active PT->hide_kernel. [ again thanks to Björn for initiating the extension ] Reference(s): . original hide_kernel implementation commit 2a7ec67ac806d91520f59c384684e2332774368b . original hide_kernel proposal https://gitlab.com/procps-ng/procps/-/merge_requests/147 Signed-off-by: Jim Warner <james.warner@comcast.net>
This commit is contained in:
parent
bad7f2a263
commit
b9723148a2
@ -1229,9 +1229,13 @@ static proc_t *simple_readproc(PROCTAB *restrict const PT, proc_t *restrict cons
|
|||||||
autogroup_fill(path, p);
|
autogroup_fill(path, p);
|
||||||
|
|
||||||
// openproc() ensured that a ppid will be present when needed ...
|
// openproc() ensured that a ppid will be present when needed ...
|
||||||
if (rc == 0)
|
if (rc == 0) {
|
||||||
return (PT->hide_kernel && (p->ppid == 2 || p->tid == 2)) ? NULL : p;
|
if (PT->hide_kernel && (p->ppid == 2 || p->tid == 2)) {
|
||||||
|
free_acquired(p);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return p;
|
||||||
|
}
|
||||||
errno = ENOMEM;
|
errno = ENOMEM;
|
||||||
next_proc:
|
next_proc:
|
||||||
return NULL;
|
return NULL;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user