From cbcb848e6d4f4e8c4aa11c80f1f3dbb7fb2d397e Mon Sep 17 00:00:00 2001
From: Beniamino Galvani <bgalvani@redhat.com>
Date: Mon, 4 Jan 2016 14:22:01 +0100
Subject: [PATCH 3/7] 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
(cherry picked from commit ed536998f9530698ff3082fc5587dbeb7d3a594f)
---
 src/devices/nm-device.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
index bb39ca5..4413e92 100644
--- a/src/devices/nm-device.c
+++ b/src/devices/nm-device.c
@@ -1526,12 +1526,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;
 
-- 
2.5.0

