summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2019-07-30 11:03:59 +0200
committerBeniamino Galvani <bgalvani@redhat.com>2019-07-30 11:12:35 +0200
commit47642a2657bf721a915f453d081f44fe654cb719 (patch)
tree061618a669c8cece1cc1799ace89a4eefe0c1846
parentccd4be4014f9f4cfdd0d298ff387ee7558d5f3a5 (diff)
downloadNetworkManager-47642a2657bf721a915f453d081f44fe654cb719.tar.gz
device: check platform link compatibility when setting nm-owned flag
We set nm-owned to indicate whether a software device was created by NM or it was pre-existing. When checking the existence, we must verify also whether the link type is compatible with the device, otherwise it is possible to match unrelated interfaces. For example, when checking for the existence of an ovs-bridge (which is not compatible with any platform link) we could match a unrelated platform link with the same name. https://bugzilla.redhat.com/show_bug.cgi?id=1733709
-rw-r--r--src/devices/nm-device.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
index da34602427..16490ea046 100644
--- a/src/devices/nm-device.c
+++ b/src/devices/nm-device.c
@@ -4141,13 +4141,14 @@ nm_device_create_and_realize (NMDevice *self,
{
nm_auto_nmpobj const NMPObject *plink_keep_alive = NULL;
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self);
- const NMPlatformLink *plink = NULL;
+ const NMPlatformLink *plink;
/* Must be set before device is realized */
- priv->nm_owned = !nm_platform_link_get_by_ifname (nm_device_get_platform (self), priv->iface);
-
+ plink = nm_platform_link_get_by_ifname (nm_device_get_platform (self), priv->iface);
+ priv->nm_owned = !plink || !link_type_compatible (self, plink->type, NULL, NULL);
_LOGD (LOGD_DEVICE, "create (is %snm-owned)", priv->nm_owned ? "" : "not ");
+ plink = NULL;
/* Create any resources the device needs */
if (NM_DEVICE_GET_CLASS (self)->create_and_realize) {
if (!NM_DEVICE_GET_CLASS (self)->create_and_realize (self, connection, parent, &plink, error))