]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udev/net-id: Fix check for address to keep interface names stable (#8458)
authorFilipe Brandenburger <filbranden@google.com>
Thu, 15 Mar 2018 17:42:38 +0000 (10:42 -0700)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 15 Mar 2018 17:42:38 +0000 (02:42 +0900)
This was a bug inadvertently added by commit 73fc96c8ac0aa9.

The intent of the check is to "match slot address with device by
stripping the function" (as the comment above states it), for example
match network device PCI address 0000:05:00.0 (including a .0 for
function) to PCI slot address 0000:05:00, but changing that to a streq()
call prevented the match.

Change that to startswith(), which should both fix the bug and make the
intent of the check more clear and prevent unintentional bugs from being
introduced by future refactorings.

src/udev/udev-builtin-net_id.c

index 36994360c7f6281af3a4eba6e6f6937a633726b8..6efa7129303c1ab1dc21adefe446f099ec538f0e 100644 (file)
@@ -297,7 +297,7 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) {
                 if (snprintf_ok(str, sizeof str, "%s/%s/address", slots, dent->d_name) &&
                     read_one_line_file(str, &address) >= 0)
                         /* match slot address with device by stripping the function */
-                        if (streq(address, udev_device_get_sysname(names->pcidev)))
+                        if (startswith(udev_device_get_sysname(names->pcidev), address))
                                 hotplug_slot = i;
 
                 if (hotplug_slot > 0)