{
assert_return_errno(udev_device, NULL, EINVAL);
- if (device_get_devlinks_generation(udev_device->device) != udev_device->devlinks_generation) {
+ if (device_get_devlinks_generation(udev_device->device) != udev_device->devlinks_generation ||
+ !udev_device->devlinks_read) {
const char *devlink;
udev_list_cleanup(&udev_device->devlinks);
FOREACH_DEVICE_DEVLINK(udev_device->device, devlink)
udev_list_entry_add(&udev_device->devlinks, devlink, NULL);
+ udev_device->devlinks_read = true;
udev_device->devlinks_generation = device_get_devlinks_generation(udev_device->device);
}
{
assert_return_errno(udev_device, NULL, EINVAL);
- if (device_get_properties_generation(udev_device->device) != udev_device->properties_generation) {
+ if (device_get_properties_generation(udev_device->device) != udev_device->properties_generation ||
+ !udev_device->properties_read) {
const char *key, *value;
udev_list_cleanup(&udev_device->properties);
FOREACH_DEVICE_PROPERTY(udev_device->device, key, value)
udev_list_entry_add(&udev_device->properties, key, value);
+ udev_device->properties_read = true;
udev_device->properties_generation = device_get_properties_generation(udev_device->device);
}
{
assert_return_errno(udev_device, NULL, EINVAL);
- if (device_get_tags_generation(udev_device->device) != udev_device->tags_generation) {
+ if (device_get_tags_generation(udev_device->device) != udev_device->tags_generation ||
+ !udev_device->tags_read) {
const char *tag;
udev_list_cleanup(&udev_device->tags);
FOREACH_DEVICE_TAG(udev_device->device, tag)
udev_list_entry_add(&udev_device->tags, tag, NULL);
+ udev_device->tags_read = true;
udev_device->tags_generation = device_get_tags_generation(udev_device->device);
}