Skip to content

Commit

Permalink
Merge pull request #3241 from brauner/2019-12-25/remove_procfs_pidfd_…
Browse files Browse the repository at this point in the history
…support

start: remove procfs pidfd support
  • Loading branch information
hallyn committed Jan 8, 2020
2 parents 26eb73c + b94283e commit f036cc8
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 49 deletions.
43 changes: 0 additions & 43 deletions src/lxc/start.c
Expand Up @@ -385,8 +385,6 @@ static int signal_handler(int fd, uint32_t events, void *data,
if (siginfo.ssi_signo == SIGHUP) {
if (hdlr->pidfd >= 0)
lxc_raw_pidfd_send_signal(hdlr->pidfd, SIGTERM, NULL, 0);
else if (hdlr->proc_pidfd >= 0)
lxc_raw_pidfd_send_signal(hdlr->proc_pidfd, SIGTERM, NULL, 0);
else
kill(hdlr->pid, SIGTERM);
INFO("Killing %d since terminal hung up", hdlr->pid);
Expand All @@ -398,9 +396,6 @@ static int signal_handler(int fd, uint32_t events, void *data,
if (hdlr->pidfd >= 0)
lxc_raw_pidfd_send_signal(hdlr->pidfd,
siginfo.ssi_signo, NULL, 0);
else if (hdlr->proc_pidfd >= 0)
lxc_raw_pidfd_send_signal(hdlr->proc_pidfd,
siginfo.ssi_signo, NULL, 0);
else
kill(hdlr->pid, siginfo.ssi_signo);
INFO("Forwarded signal %d to pid %d", siginfo.ssi_signo, hdlr->pid);
Expand Down Expand Up @@ -649,8 +644,6 @@ void lxc_zero_handler(struct lxc_handler *handler)

handler->pidfd = -EBADF;

handler->proc_pidfd = -EBADF;

handler->sigfd = -1;

for (i = 0; i < LXC_NS_MAX; i++)
Expand All @@ -674,9 +667,6 @@ void lxc_free_handler(struct lxc_handler *handler)
if (handler->pidfd >= 0)
close(handler->pidfd);

if (handler->proc_pidfd >= 0)
close(handler->proc_pidfd);

if (handler->sigfd >= 0)
close(handler->sigfd);

Expand Down Expand Up @@ -726,7 +716,6 @@ struct lxc_handler *lxc_init_handler(const char *name, struct lxc_conf *conf,
handler->monitor_status_fd = -EBADF;
handler->pinfd = -1;
handler->pidfd = -EBADF;
handler->proc_pidfd = -EBADF;
handler->sigfd = -EBADF;
handler->init_died = false;
handler->state_socket_pair[0] = handler->state_socket_pair[1] = -1;
Expand Down Expand Up @@ -1104,8 +1093,6 @@ void lxc_abort(const char *name, struct lxc_handler *handler)

if (handler->pidfd >= 0)
ret = lxc_raw_pidfd_send_signal(handler->pidfd, SIGKILL, NULL, 0);
else if (handler->proc_pidfd >= 0)
ret = lxc_raw_pidfd_send_signal(handler->proc_pidfd, SIGKILL, NULL, 0);
else if (handler->pid > 0)
ret = kill(handler->pid, SIGKILL);
if (ret < 0)
Expand Down Expand Up @@ -1624,30 +1611,6 @@ static inline int do_share_ns(void *arg)
return 0;
}

static int proc_pidfd_open(pid_t pid)
{
__do_close_prot_errno int proc_pidfd = -EBADF;
char path[100];

snprintf(path, sizeof(path), "/proc/%d", pid);
proc_pidfd = open(path, O_DIRECTORY | O_RDONLY | O_CLOEXEC);
if (proc_pidfd < 0) {
SYSERROR("Failed to open %s", path);
return -1;
}

/* Test whether we can send signals. */
if (lxc_raw_pidfd_send_signal(proc_pidfd, 0, NULL, 0)) {
if (errno != ENOSYS)
SYSERROR("Failed to send signal through pidfd");
else
INFO("Sending signals through pidfds not supported on this kernel");
return -1;
}

return move_fd(proc_pidfd);
}

/* lxc_spawn() performs crucial setup tasks and clone()s the new process which
* exec()s the requested container binary.
* Note that lxc_spawn() runs in the parent namespaces. Any operations performed
Expand Down Expand Up @@ -1759,12 +1722,6 @@ static int lxc_spawn(struct lxc_handler *handler)
}
TRACE("Cloned child process %d", handler->pid);

if (handler->pidfd < 0) {
handler->proc_pidfd = proc_pidfd_open(handler->pid);
if (handler->proc_pidfd < 0 && (errno != ENOSYS))
goto out_delete_net;
}

ret = snprintf(pidstr, 20, "%d", handler->pid);
if (ret < 0 || ret >= 20)
goto out_delete_net;
Expand Down
6 changes: 0 additions & 6 deletions src/lxc/start.h
Expand Up @@ -83,12 +83,6 @@ struct lxc_handler {
/* The child's pidfd. */
int pidfd;

/*
* File descriptor for the /proc/<pid> directory of the container's
* init process.
*/
int proc_pidfd;

/* The grandfather's pid when double-forking. */
pid_t transient_pid;

Expand Down

0 comments on commit f036cc8

Please sign in to comment.