[lxc-devel] [lxc/master] unlink lxc-init
tych0 on Github
lxc-bot at linuxcontainers.org
Fri Jan 19 16:44:22 UTC 2018
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 495 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20180119/50297e23/attachment.bin>
-------------- next part --------------
From 58fb9c8efe1b4594379e35e1c9b6ced0dd550b52 Mon Sep 17 00:00:00 2001
From: Tycho Andersen <tycho at tycho.ws>
Date: Wed, 20 Dec 2017 17:52:38 +0000
Subject: [PATCH] unlink lxc-init
It's sort of an implementation detail that this exists at all, and we
should probably not pollute the container's mount tables or FS with this.
Signed-off-by: Tycho Andersen <tycho at tycho.ws>
---
src/lxc/lxc_init.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/src/lxc/lxc_init.c b/src/lxc/lxc_init.c
index 78811de4b..29394c80d 100644
--- a/src/lxc/lxc_init.c
+++ b/src/lxc/lxc_init.c
@@ -195,6 +195,30 @@ static void kill_children(pid_t pid)
fclose(f);
}
+static void remove_self(void)
+{
+ char path[PATH_MAX];
+ ssize_t n;
+
+ n = readlink("/proc/self/exe", path, sizeof(path));
+ if (n < 0) {
+ SYSERROR("Failed to readlink \"/proc/self/exe\"");
+ return;
+ }
+
+ path[n] = 0;
+
+ if (umount2(path, MNT_DETACH) < 0) {
+ SYSERROR("Failed to unmount \"%s\"", path);
+ return;
+ }
+
+ if (unlink(path) < 0) {
+ SYSERROR("Failed to unlink \"%s\"", path);
+ return;
+ }
+}
+
int main(int argc, char *argv[])
{
int i, ret;
@@ -296,6 +320,8 @@ int main(int argc, char *argv[])
lxc_setup_fs();
+ remove_self();
+
pid = fork();
if (pid < 0)
exit(EXIT_FAILURE);
More information about the lxc-devel
mailing list