[lxc-devel] [lxc/master] bugfixes

brauner on Github lxc-bot at linuxcontainers.org
Thu Jul 5 23:18:52 UTC 2018


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 364 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20180705/22e979ae/attachment.bin>
-------------- next part --------------
From ec1dc633944469682a63148940acca0ea79e86c4 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Fri, 6 Jul 2018 01:10:13 +0200
Subject: [PATCH 1/3] start: refactor match_stdfds()

Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
 src/lxc/start.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/lxc/start.c b/src/lxc/start.c
index 953722261..a13b56d9c 100644
--- a/src/lxc/start.c
+++ b/src/lxc/start.c
@@ -208,9 +208,9 @@ static bool lxc_try_preserve_namespaces(struct lxc_handler *handler,
 	return true;
 }
 
-static int match_fd(int fd)
+static inline bool match_stdfds(int fd)
 {
-	return (fd == 0 || fd == 1 || fd == 2);
+	return (fd == STDIN_FILENO || fd == STDOUT_FILENO || fd == STDERR_FILENO);
 }
 
 int lxc_check_inherited(struct lxc_conf *conf, bool closeall,
@@ -277,7 +277,7 @@ int lxc_check_inherited(struct lxc_conf *conf, bool closeall,
 		if (current_config && fd == current_config->logfd)
 			continue;
 
-		if (match_fd(fd))
+		if (match_stdfds(fd))
 			continue;
 
 		if (closeall) {

From b9201a6dfb3f23dc70914bceb9cbbd54d5c068e5 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Fri, 6 Jul 2018 01:10:46 +0200
Subject: [PATCH 2/3] start: declar int array const

Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
 src/lxc/start.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/lxc/start.c b/src/lxc/start.c
index a13b56d9c..e9eac4f2b 100644
--- a/src/lxc/start.c
+++ b/src/lxc/start.c
@@ -301,9 +301,10 @@ int lxc_check_inherited(struct lxc_conf *conf, bool closeall,
 
 static int setup_signal_fd(sigset_t *oldmask)
 {
-	int ret, sig;
+	int ret;
+	int sig;
 	sigset_t mask;
-	int signals[] = {SIGBUS, SIGILL, SIGSEGV, SIGWINCH};
+	const int signals[] = {SIGBUS, SIGILL, SIGSEGV, SIGWINCH};
 
 	/* Block everything except serious error signals. */
 	ret = sigfillset(&mask);

From 2f891b6a798bc363044997dbb13af2abd6b1e9f9 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Fri, 6 Jul 2018 01:15:38 +0200
Subject: [PATCH 3/3] tree-wide: set MSG_NOSIGNAL

Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
 src/lxc/commands.c | 4 ++--
 src/lxc/network.c  | 6 +++---
 src/lxc/nl.c       | 2 +-
 src/lxc/start.c    | 2 +-
 4 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/lxc/commands.c b/src/lxc/commands.c
index 618b3089d..9bf96fa8d 100644
--- a/src/lxc/commands.c
+++ b/src/lxc/commands.c
@@ -206,7 +206,7 @@ static int lxc_cmd_rsp_send(int fd, struct lxc_cmd_rsp *rsp)
 {
 	ssize_t ret;
 
-	ret = send(fd, rsp, sizeof(*rsp), 0);
+	ret = send(fd, rsp, sizeof(*rsp), MSG_NOSIGNAL);
 	if (ret < 0 || (size_t)ret != sizeof(*rsp)) {
 		SYSERROR("Failed to send command response %zd", ret);
 		return -1;
@@ -215,7 +215,7 @@ static int lxc_cmd_rsp_send(int fd, struct lxc_cmd_rsp *rsp)
 	if (!rsp->data || rsp->datalen <= 0)
 		return 0;
 
-	ret = send(fd, rsp->data, rsp->datalen, 0);
+	ret = send(fd, rsp->data, rsp->datalen, MSG_NOSIGNAL);
 	if (ret < 0 || ret != (ssize_t)rsp->datalen) {
 		SYSWARN("Failed to send command response data %zd", ret);
 		return -1;
diff --git a/src/lxc/network.c b/src/lxc/network.c
index c9497afa4..63f321f46 100644
--- a/src/lxc/network.c
+++ b/src/lxc/network.c
@@ -3094,7 +3094,7 @@ int lxc_network_send_veth_names_to_child(struct lxc_handler *handler)
 		if (netdev->type != LXC_NET_VETH)
 			continue;
 
-		ret = send(data_sock, netdev->name, IFNAMSIZ, 0);
+		ret = send(data_sock, netdev->name, IFNAMSIZ, MSG_NOSIGNAL);
 		if (ret < 0)
 			return -1;
 		TRACE("Sent network device name \"%s\" to child", netdev->name);
@@ -3142,14 +3142,14 @@ int lxc_network_send_name_and_ifindex_to_parent(struct lxc_handler *handler)
 		struct lxc_netdev *netdev = iterator->elem;
 
 		/* Send network device name in the child's namespace to parent. */
-		ret = send(data_sock, netdev->name, IFNAMSIZ, 0);
+		ret = send(data_sock, netdev->name, IFNAMSIZ, MSG_NOSIGNAL);
 		if (ret < 0)
 			return -1;
 
 		/* Send network device ifindex in the child's namespace to
 		 * parent.
 		 */
-		ret = send(data_sock, &netdev->ifindex, sizeof(netdev->ifindex), 0);
+		ret = send(data_sock, &netdev->ifindex, sizeof(netdev->ifindex), MSG_NOSIGNAL);
 		if (ret < 0)
 			return -1;
 	}
diff --git a/src/lxc/nl.c b/src/lxc/nl.c
index 994c960df..e1dd84432 100644
--- a/src/lxc/nl.c
+++ b/src/lxc/nl.c
@@ -229,7 +229,7 @@ extern int netlink_send(struct nl_handler *handler, struct nlmsg *nlmsg)
 	nladdr.nl_pid = 0;
 	nladdr.nl_groups = 0;
 
-	ret = sendmsg(handler->fd, &msg, 0);
+	ret = sendmsg(handler->fd, &msg, MSG_NOSIGNAL);
 	if (ret < 0)
 		return -errno;
 
diff --git a/src/lxc/start.c b/src/lxc/start.c
index e9eac4f2b..fe3100a90 100644
--- a/src/lxc/start.c
+++ b/src/lxc/start.c
@@ -452,7 +452,7 @@ int lxc_serve_state_clients(const char *name, struct lxc_handler *handler,
 		      lxc_state2str(state), client->clientfd);
 
 	again:
-		ret = send(client->clientfd, &msg, sizeof(msg), 0);
+		ret = send(client->clientfd, &msg, sizeof(msg), MSG_NOSIGNAL);
 		if (ret <= 0) {
 			if (errno == EINTR) {
 				TRACE("Caught EINTR; retrying");


More information about the lxc-devel mailing list