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 953722261..fe3100a90 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 @@ restart: if (current_config && fd == current_config->logfd) continue; - if (match_fd(fd)) + if (match_stdfds(fd)) continue; if (closeall) { @@ -301,9 +301,10 @@ restart: 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); @@ -451,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");