summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2016-01-04 14:22:01 +0100
committerBeniamino Galvani <bgalvani@redhat.com>2016-01-05 18:36:46 +0100
commited536998f9530698ff3082fc5587dbeb7d3a594f (patch)
tree74de8667fe478daeb8c5595b841513c6e4876d08
parent5f93f0101538db39efe0f9ea2316e63bff953bf0 (diff)
downloadNetworkManager-ed536998f9530698ff3082fc5587dbeb7d3a594f.tar.gz
device: update @ip_iface only if IP interface exists
If @ip_ifindex is zero, the IP interface has disappeared and there's no point in updating @ip_iface. Actually, unconditionally updating @ip_iface is dangerous because it breaks the assumption used by other functions (as nm_device_get_ip_ifindex()) that a non-NULL @ip_iface implies a valid @ip_ifindex. This was causing the scary failure: devices/nm-device.c:666:get_ip_iface_identifier: assertion failed: (ifindex) https://bugzilla.redhat.com/show_bug.cgi?id=1268617
-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 0aa7650891..8c0a599bc8 100644
--- a/src/devices/nm-device.c
+++ b/src/devices/nm-device.c
@@ -1601,12 +1601,13 @@ device_ip_link_changed (NMDevice *self)
{
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self);
const NMPlatformLink *pllink;
- int ip_ifindex;
priv->device_ip_link_changed_id = 0;
- ip_ifindex = nm_device_get_ip_ifindex (self);
- pllink = nm_platform_link_get (NM_PLATFORM_GET, ip_ifindex);
+ if (!priv->ip_ifindex)
+ return G_SOURCE_REMOVE;
+
+ pllink = nm_platform_link_get (NM_PLATFORM_GET, priv->ip_ifindex);
if (!pllink)
return G_SOURCE_REMOVE;