From fa15543179aa8ca8e082267121e7df4a131bf642 Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Mon, 19 Dec 2016 08:20:05 +0100 Subject: [PATCH] device: don't try to get carrier detection support when unrealizing get_generic_capabilities() is called with a 0 ifindex when unrealizing: don't call nm_platform_link_supports_carrier_detect() is such case. --- src/devices/nm-device-ethernet.c | 16 ++++++++++------ src/devices/nm-device-generic.c | 4 +++- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/devices/nm-device-ethernet.c b/src/devices/nm-device-ethernet.c index 2f9a092a0f..4fc32c38f2 100644 --- a/src/devices/nm-device-ethernet.c +++ b/src/devices/nm-device-ethernet.c @@ -306,14 +306,18 @@ static NMDeviceCapabilities get_generic_capabilities (NMDevice *device) { NMDeviceEthernet *self = NM_DEVICE_ETHERNET (device); + int ifindex = nm_device_get_ifindex (device); - if (nm_platform_link_supports_carrier_detect (NM_PLATFORM_GET, nm_device_get_ifindex (device))) - return NM_DEVICE_CAP_CARRIER_DETECT; - else { - _LOGI (LOGD_PLATFORM, "driver '%s' does not support carrier detection.", - nm_device_get_driver (device)); - return NM_DEVICE_CAP_NONE; + if (ifindex > 0) { + if (nm_platform_link_supports_carrier_detect (NM_PLATFORM_GET, ifindex)) + return NM_DEVICE_CAP_CARRIER_DETECT; + else { + _LOGI (LOGD_PLATFORM, "driver '%s' does not support carrier detection.", + nm_device_get_driver (device)); + } } + + return NM_DEVICE_CAP_NONE; } static guint32 diff --git a/src/devices/nm-device-generic.c b/src/devices/nm-device-generic.c index 60afb6753d..2f51c69dd5 100644 --- a/src/devices/nm-device-generic.c +++ b/src/devices/nm-device-generic.c @@ -56,7 +56,9 @@ G_DEFINE_TYPE (NMDeviceGeneric, nm_device_generic, NM_TYPE_DEVICE) static NMDeviceCapabilities get_generic_capabilities (NMDevice *dev) { - if (nm_platform_link_supports_carrier_detect (NM_PLATFORM_GET, nm_device_get_ifindex (dev))) + int ifindex = nm_device_get_ifindex (dev); + + if (ifindex > 0 && nm_platform_link_supports_carrier_detect (NM_PLATFORM_GET, ifindex)) return NM_DEVICE_CAP_CARRIER_DETECT; else return NM_DEVICE_CAP_NONE;