mirror of
https://github.com/systemd/systemd.git
synced 2025-09-16 17:45:36 +03:00
tree-wide: refuse enumerated device with ID_PROCESSING=1
When enumerated devices are being processed by udevd, we will receive corresponding uevents later. So, we should not process devices in that case.
This commit is contained in:
@@ -1051,6 +1051,9 @@ static void device_enumerate(Manager *m) {
|
|||||||
_cleanup_set_free_ Set *ready_units = NULL, *not_ready_units = NULL;
|
_cleanup_set_free_ Set *ready_units = NULL, *not_ready_units = NULL;
|
||||||
Device *d;
|
Device *d;
|
||||||
|
|
||||||
|
if (device_is_processed(dev) <= 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
if (device_setup_units(m, dev, &ready_units, ¬_ready_units) < 0)
|
if (device_setup_units(m, dev, &ready_units, ¬_ready_units) < 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@@ -1365,8 +1365,11 @@ static int manager_enumerate_devices(Manager *m) {
|
|||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
FOREACH_DEVICE(e, d)
|
FOREACH_DEVICE(e, d) {
|
||||||
|
if (device_is_processed(d) <= 0)
|
||||||
|
continue;
|
||||||
(void) manager_add_device(m, d);
|
(void) manager_add_device(m, d);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -194,8 +194,11 @@ static int manager_enumerate_devices(Manager *m) {
|
|||||||
|
|
||||||
r = 0;
|
r = 0;
|
||||||
|
|
||||||
FOREACH_DEVICE(e, d)
|
FOREACH_DEVICE(e, d) {
|
||||||
|
if (device_is_processed(d) <= 0)
|
||||||
|
continue;
|
||||||
RET_GATHER(r, manager_process_seat_device(m, d));
|
RET_GATHER(r, manager_process_seat_device(m, d));
|
||||||
|
}
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
@@ -225,8 +228,11 @@ static int manager_enumerate_buttons(Manager *m) {
|
|||||||
|
|
||||||
r = 0;
|
r = 0;
|
||||||
|
|
||||||
FOREACH_DEVICE(e, d)
|
FOREACH_DEVICE(e, d) {
|
||||||
|
if (device_is_processed(d) <= 0)
|
||||||
|
continue;
|
||||||
RET_GATHER(r, manager_process_button_device(m, d));
|
RET_GATHER(r, manager_process_button_device(m, d));
|
||||||
|
}
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
@@ -1214,9 +1214,12 @@ static int run(int argc, char* argv[]) {
|
|||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_error_errno(r, "Failed to exclude loop devices: %m");
|
return log_error_errno(r, "Failed to exclude loop devices: %m");
|
||||||
|
|
||||||
FOREACH_DEVICE(enumerator, device)
|
FOREACH_DEVICE(enumerator, device) {
|
||||||
|
if (device_is_processed(device) <= 0)
|
||||||
|
continue;
|
||||||
device_added(&context, device);
|
device_added(&context, device);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_cleanup_(sd_netlink_unrefp) sd_netlink *rtnl = NULL;
|
_cleanup_(sd_netlink_unrefp) sd_netlink *rtnl = NULL;
|
||||||
r = sd_netlink_open(&rtnl);
|
r = sd_netlink_open(&rtnl);
|
||||||
|
Reference in New Issue
Block a user