diff options
author | Fabricio Voznika <fvoznika@google.com> | 2018-09-26 21:58:54 -0700 |
---|---|---|
committer | Shentubot <shentubot@google.com> | 2018-09-26 22:00:04 -0700 |
commit | fca9a390db4c965b4606dd85838460841bd4ab14 (patch) | |
tree | 3f6105d71064ec1e091f39afdb06d28deadff792 | |
parent | a003e041c86198122af7e37cc171517f977dde6a (diff) |
Return correct parent PID
Old code was returning ID of the thread that created
the child process. It should be returning the ID of
the parent process instead.
PiperOrigin-RevId: 214720910
Change-Id: I95715c535bcf468ecf1ae771cccd04a4cd345b36
-rw-r--r-- | pkg/sentry/control/proc.go | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/pkg/sentry/control/proc.go b/pkg/sentry/control/proc.go index 68d3b179b..b120471cb 100644 --- a/pkg/sentry/control/proc.go +++ b/pkg/sentry/control/proc.go @@ -269,11 +269,14 @@ func Processes(k *kernel.Kernel, out *[]*Process) error { continue } + ppid := kernel.ThreadID(0) + if tg.Leader().Parent() != nil { + ppid = ts.Root.IDOfThreadGroup(tg.Leader().Parent().ThreadGroup()) + } *out = append(*out, &Process{ - UID: tg.Leader().Credentials().EffectiveKUID, - PID: pid, - // If Parent is null (i.e. tg is the init process), PPID will be 0. - PPID: ts.Root.IDOfTask(tg.Leader().Parent()), + UID: tg.Leader().Credentials().EffectiveKUID, + PID: pid, + PPID: ppid, STime: formatStartTime(now, tg.Leader().StartTime()), C: percentCPU(tg.CPUStats(), tg.Leader().StartTime(), now), Time: tg.CPUStats().SysTime.String(), |