summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-apps/systemd/files/238-0003-udev-net-id-Fix-check-for-address-to-keep-interface-8458.patch')
-rw-r--r--sys-apps/systemd/files/238-0003-udev-net-id-Fix-check-for-address-to-keep-interface-8458.patch37
1 files changed, 37 insertions, 0 deletions
diff --git a/sys-apps/systemd/files/238-0003-udev-net-id-Fix-check-for-address-to-keep-interface-8458.patch b/sys-apps/systemd/files/238-0003-udev-net-id-Fix-check-for-address-to-keep-interface-8458.patch
new file mode 100644
index 000000000000..693d67152ea9
--- /dev/null
+++ b/sys-apps/systemd/files/238-0003-udev-net-id-Fix-check-for-address-to-keep-interface-8458.patch
@@ -0,0 +1,37 @@
+From 8eebb6a9e5e74ec0ef40902e2da53d24559b94a4 Mon Sep 17 00:00:00 2001
+From: Filipe Brandenburger <filbranden@google.com>
+Date: Thu, 15 Mar 2018 10:42:38 -0700
+Subject: [PATCH] udev/net-id: Fix check for address to keep interface names
+ stable (#8458)
+
+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 | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
+index 36994360c7..6efa712930 100644
+--- a/src/udev/udev-builtin-net_id.c
++++ b/src/udev/udev-builtin-net_id.c
+@@ -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)
+--
+2.16.2
+