mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-14 01:39:59 +00:00
commit
7cb6d1b0a8
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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");
|
||||
|
Loading…
Reference in New Issue
Block a user