1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-01-06 13:17:44 +03:00

udev/builtins: make skip_subsystem() and skip_virtio() alike

The two functions do not implement identical logic, so they shouldn't
have identical structure, but let's make them both a bit simpler and
more alike.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2021-08-03 16:49:05 +02:00
parent d3d2e3abda
commit d340bdd1bd
2 changed files with 7 additions and 12 deletions

View File

@ -78,25 +78,23 @@ struct virtfn_info {
/* skip intermediate virtio devices */
static sd_device *skip_virtio(sd_device *dev) {
sd_device *parent;
/* there can only ever be one virtio bus per parent device, so we can
* safely ignore any virtio buses. see
* http://lists.linuxfoundation.org/pipermail/virtualization/2015-August/030331.html */
for (parent = dev; parent; ) {
while (dev) {
const char *subsystem;
if (sd_device_get_subsystem(parent, &subsystem) < 0)
if (sd_device_get_subsystem(dev, &subsystem) < 0)
break;
if (!streq(subsystem, "virtio"))
break;
if (sd_device_get_parent(parent, &parent) < 0)
if (sd_device_get_parent(dev, &dev) < 0)
return NULL;
}
return parent;
return dev;
}
static int get_virtfn_info(sd_device *dev, struct netnames *names, struct virtfn_info *ret) {

View File

@ -80,22 +80,19 @@ static int format_lun_number(sd_device *dev, char **path) {
}
static sd_device *skip_subsystem(sd_device *dev, const char *subsys) {
sd_device *parent;
assert(dev);
assert(subsys);
for (parent = dev; ; ) {
for (;;) {
const char *subsystem;
if (sd_device_get_subsystem(parent, &subsystem) < 0)
if (sd_device_get_subsystem(dev, &subsystem) < 0)
break;
if (!streq(subsystem, subsys))
break;
dev = parent;
if (sd_device_get_parent(dev, &parent) < 0)
if (sd_device_get_parent(dev, &dev) < 0)
break;
}