udev: drop redundant initializations for file descriptors
As udev_ctrl_new_from_fd() or udev_monitor_new_from_netlink_fd() creates fd if negative fd is passed.
This commit is contained in:
parent
c52cff0748
commit
c4b69e990f
|
@ -1356,12 +1356,12 @@ static int on_post(sd_event_source *s, void *userdata) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int listen_fds(int *rctrl, int *rnetlink) {
|
static int listen_fds(int *ret_ctrl, int *ret_netlink) {
|
||||||
int ctrl_fd = -1, netlink_fd = -1;
|
int ctrl_fd = -1, netlink_fd = -1;
|
||||||
int fd, n, r;
|
int fd, n;
|
||||||
|
|
||||||
assert(rctrl);
|
assert(ret_ctrl);
|
||||||
assert(rnetlink);
|
assert(ret_netlink);
|
||||||
|
|
||||||
n = sd_listen_fds(true);
|
n = sd_listen_fds(true);
|
||||||
if (n < 0)
|
if (n < 0)
|
||||||
|
@ -1385,50 +1385,8 @@ static int listen_fds(int *rctrl, int *rnetlink) {
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctrl_fd < 0) {
|
*ret_ctrl = ctrl_fd;
|
||||||
_cleanup_(udev_ctrl_unrefp) struct udev_ctrl *ctrl = NULL;
|
*ret_netlink = netlink_fd;
|
||||||
|
|
||||||
ctrl = udev_ctrl_new();
|
|
||||||
if (!ctrl)
|
|
||||||
return log_error_errno(EINVAL, "error initializing udev control socket");
|
|
||||||
|
|
||||||
r = udev_ctrl_enable_receiving(ctrl);
|
|
||||||
if (r < 0)
|
|
||||||
return log_error_errno(EINVAL, "error binding udev control socket");
|
|
||||||
|
|
||||||
fd = udev_ctrl_get_fd(ctrl);
|
|
||||||
if (fd < 0)
|
|
||||||
return log_error_errno(EIO, "could not get ctrl fd");
|
|
||||||
|
|
||||||
ctrl_fd = fcntl(fd, F_DUPFD_CLOEXEC, 3);
|
|
||||||
if (ctrl_fd < 0)
|
|
||||||
return log_error_errno(errno, "could not dup ctrl fd: %m");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (netlink_fd < 0) {
|
|
||||||
_cleanup_(udev_monitor_unrefp) struct udev_monitor *monitor = NULL;
|
|
||||||
|
|
||||||
monitor = udev_monitor_new_from_netlink(NULL, "kernel");
|
|
||||||
if (!monitor)
|
|
||||||
return log_error_errno(EINVAL, "error initializing netlink socket");
|
|
||||||
|
|
||||||
(void) udev_monitor_set_receive_buffer_size(monitor, 128 * 1024 * 1024);
|
|
||||||
|
|
||||||
r = udev_monitor_enable_receiving(monitor);
|
|
||||||
if (r < 0)
|
|
||||||
return log_error_errno(EINVAL, "error binding netlink socket");
|
|
||||||
|
|
||||||
fd = udev_monitor_get_fd(monitor);
|
|
||||||
if (fd < 0)
|
|
||||||
return log_error_errno(netlink_fd, "could not get uevent fd: %m");
|
|
||||||
|
|
||||||
netlink_fd = fcntl(fd, F_DUPFD_CLOEXEC, 3);
|
|
||||||
if (netlink_fd < 0)
|
|
||||||
return log_error_errno(errno, "could not dup netlink fd: %m");
|
|
||||||
}
|
|
||||||
|
|
||||||
*rctrl = ctrl_fd;
|
|
||||||
*rnetlink = netlink_fd;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1593,8 +1551,6 @@ static int manager_new(Manager **ret, int fd_ctrl, int fd_uevent, const char *cg
|
||||||
int r, fd_worker;
|
int r, fd_worker;
|
||||||
|
|
||||||
assert(ret);
|
assert(ret);
|
||||||
assert(fd_ctrl >= 0);
|
|
||||||
assert(fd_uevent >= 0);
|
|
||||||
|
|
||||||
manager = new0(Manager, 1);
|
manager = new0(Manager, 1);
|
||||||
if (!manager)
|
if (!manager)
|
||||||
|
@ -1618,10 +1574,28 @@ static int manager_new(Manager **ret, int fd_ctrl, int fd_uevent, const char *cg
|
||||||
if (!manager->ctrl)
|
if (!manager->ctrl)
|
||||||
return log_error_errno(EINVAL, "error taking over udev control socket");
|
return log_error_errno(EINVAL, "error taking over udev control socket");
|
||||||
|
|
||||||
|
r = udev_ctrl_enable_receiving(manager->ctrl);
|
||||||
|
if (r < 0)
|
||||||
|
return log_error_errno(r, "Failed to bind udev control socket: %m");
|
||||||
|
|
||||||
|
fd_ctrl = udev_ctrl_get_fd(manager->ctrl);
|
||||||
|
if (fd_ctrl < 0)
|
||||||
|
return log_error_errno(fd_ctrl, "Failed to get udev control fd: %m");
|
||||||
|
|
||||||
manager->monitor = udev_monitor_new_from_netlink_fd(NULL, "kernel", fd_uevent);
|
manager->monitor = udev_monitor_new_from_netlink_fd(NULL, "kernel", fd_uevent);
|
||||||
if (!manager->monitor)
|
if (!manager->monitor)
|
||||||
return log_error_errno(EINVAL, "error taking over netlink socket");
|
return log_error_errno(EINVAL, "error taking over netlink socket");
|
||||||
|
|
||||||
|
(void) udev_monitor_set_receive_buffer_size(manager->monitor, 128 * 1024 * 1024);
|
||||||
|
|
||||||
|
r = udev_monitor_enable_receiving(manager->monitor);
|
||||||
|
if (r < 0)
|
||||||
|
return log_error_errno(r, "Failed to bind netlink socket; %m");
|
||||||
|
|
||||||
|
fd_uevent = udev_monitor_get_fd(manager->monitor);
|
||||||
|
if (fd_uevent < 0)
|
||||||
|
return log_error_errno(fd_uevent, "Failed to get uevent fd: %m");
|
||||||
|
|
||||||
/* unnamed socket from workers to the main daemon */
|
/* unnamed socket from workers to the main daemon */
|
||||||
r = socketpair(AF_LOCAL, SOCK_DGRAM|SOCK_CLOEXEC, 0, manager->worker_watch);
|
r = socketpair(AF_LOCAL, SOCK_DGRAM|SOCK_CLOEXEC, 0, manager->worker_watch);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
|
|
Loading…
Reference in a new issue