[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