Commit b6ff98e0 authored by Radostin Stoyanov's avatar Radostin Stoyanov Committed by Andrei Vagin

pstree: Avoid multiple calls to getpid()

Signed-off-by: 's avatarRadostin Stoyanov <rstoyanov1@gmail.com>
Reviewed-by: 's avatarDmitry Safonov <0x7f454c46@gmail.com>
Signed-off-by: 's avatarAndrei Vagin <avagin@gmail.com>
parent 0d6bc8d1
...@@ -333,10 +333,10 @@ err: ...@@ -333,10 +333,10 @@ err:
return ret; return ret;
} }
static int prepare_pstree_for_shell_job(void) static int prepare_pstree_for_shell_job(pid_t pid)
{ {
pid_t current_sid = getsid(getpid()); pid_t current_sid = getsid(pid);
pid_t current_gid = getpgid(getpid()); pid_t current_gid = getpgid(pid);
struct pstree_item *pi; struct pstree_item *pi;
...@@ -625,12 +625,12 @@ static int get_free_pid() ...@@ -625,12 +625,12 @@ static int get_free_pid()
return -1; return -1;
} }
static int prepare_pstree_ids(void) static int prepare_pstree_ids(pid_t pid)
{ {
struct pstree_item *item, *child, *helper, *tmp; struct pstree_item *item, *child, *helper, *tmp;
LIST_HEAD(helpers); LIST_HEAD(helpers);
pid_t current_pgid = getpgid(getpid()); pid_t current_pgid = getpgid(pid);
/* /*
* Some task can be reparented to init. A helper task should be added * Some task can be reparented to init. A helper task should be added
...@@ -910,7 +910,7 @@ static int prepare_pstree_kobj_ids(void) ...@@ -910,7 +910,7 @@ static int prepare_pstree_kobj_ids(void)
int prepare_pstree(void) int prepare_pstree(void)
{ {
int ret; int ret;
pid_t pid_max = 0, kpid_max = 0; pid_t pid_max = 0, kpid_max = 0, pid;
int fd; int fd;
char buf[21]; char buf[21];
...@@ -945,12 +945,14 @@ int prepare_pstree(void) ...@@ -945,12 +945,14 @@ int prepare_pstree(void)
} }
} }
pid = getpid();
if (!ret) if (!ret)
/* /*
* Shell job may inherit sid/pgid from the current * Shell job may inherit sid/pgid from the current
* shell, not from image. Set things up for this. * shell, not from image. Set things up for this.
*/ */
ret = prepare_pstree_for_shell_job(); ret = prepare_pstree_for_shell_job(pid);
if (!ret) if (!ret)
/* /*
* Walk the collected tree and prepare for restoring * Walk the collected tree and prepare for restoring
...@@ -962,7 +964,7 @@ int prepare_pstree(void) ...@@ -962,7 +964,7 @@ int prepare_pstree(void)
* Session/Group leaders might be dead. Need to fix * Session/Group leaders might be dead. Need to fix
* pstree with properly injected helper tasks. * pstree with properly injected helper tasks.
*/ */
ret = prepare_pstree_ids(); ret = prepare_pstree_ids(pid);
return ret; return ret;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment