Skip to content

Commit bdb492b

Browse files
yuwatapoettering
authored andcommitted
udev: do not remove control socket on exit
As we usually do, remove old unix socket before bind. Note that systemd-udevd-control.socket has `RemoveOnStop=yes`. So, it is not necessary to be removed when the service exits. Replaces systemd#20584 and systemd#20588.
1 parent 42ffc40 commit bdb492b

File tree

3 files changed

+2
-24
lines changed

3 files changed

+2
-24
lines changed

src/udev/udev-ctrl.c

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ struct UdevCtrl {
3737
union sockaddr_union saddr;
3838
socklen_t addrlen;
3939
bool bound;
40-
bool cleanup_socket;
4140
bool connected;
4241
bool maybe_disconnected;
4342
sd_event *event;
@@ -82,28 +81,19 @@ int udev_ctrl_new_from_fd(UdevCtrl **ret, int fd) {
8281
}
8382

8483
int udev_ctrl_enable_receiving(UdevCtrl *uctrl) {
85-
int r;
86-
8784
assert(uctrl);
8885

8986
if (uctrl->bound)
9087
return 0;
9188

92-
r = bind(uctrl->sock, &uctrl->saddr.sa, uctrl->addrlen);
93-
if (r < 0 && errno == EADDRINUSE) {
94-
(void) sockaddr_un_unlink(&uctrl->saddr.un);
95-
r = bind(uctrl->sock, &uctrl->saddr.sa, uctrl->addrlen);
96-
}
97-
98-
if (r < 0)
89+
(void) sockaddr_un_unlink(&uctrl->saddr.un);
90+
if (bind(uctrl->sock, &uctrl->saddr.sa, uctrl->addrlen) < 0)
9991
return log_error_errno(errno, "Failed to bind udev control socket: %m");
10092

10193
if (listen(uctrl->sock, 0) < 0)
10294
return log_error_errno(errno, "Failed to listen udev control socket: %m");
10395

10496
uctrl->bound = true;
105-
uctrl->cleanup_socket = true;
106-
10797
return 0;
10898
}
10999

@@ -129,14 +119,6 @@ static UdevCtrl *udev_ctrl_free(UdevCtrl *uctrl) {
129119

130120
DEFINE_TRIVIAL_REF_UNREF_FUNC(UdevCtrl, udev_ctrl, udev_ctrl_free);
131121

132-
int udev_ctrl_cleanup(UdevCtrl *uctrl) {
133-
if (!uctrl)
134-
return 0;
135-
if (uctrl->cleanup_socket)
136-
sockaddr_un_unlink(&uctrl->saddr.un);
137-
return 0;
138-
}
139-
140122
int udev_ctrl_attach_event(UdevCtrl *uctrl, sd_event *event) {
141123
int r;
142124

src/udev/udev-ctrl.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ static inline int udev_ctrl_new(UdevCtrl **ret) {
3636
int udev_ctrl_enable_receiving(UdevCtrl *uctrl);
3737
UdevCtrl *udev_ctrl_ref(UdevCtrl *uctrl);
3838
UdevCtrl *udev_ctrl_unref(UdevCtrl *uctrl);
39-
int udev_ctrl_cleanup(UdevCtrl *uctrl);
4039
int udev_ctrl_attach_event(UdevCtrl *uctrl, sd_event *event);
4140
int udev_ctrl_start(UdevCtrl *uctrl, udev_ctrl_handler_t callback, void *userdata);
4241
sd_event_source *udev_ctrl_get_event_source(UdevCtrl *uctrl);

src/udev/udevd.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -227,9 +227,6 @@ static Manager* manager_free(Manager *manager) {
227227

228228
udev_builtin_exit();
229229

230-
if (manager->pid == getpid_cached())
231-
udev_ctrl_cleanup(manager->ctrl);
232-
233230
manager_clear_for_worker(manager);
234231

235232
sd_netlink_unref(manager->rtnl);

0 commit comments

Comments
 (0)