diff options
author | Beniamino Galvani <bgalvani@redhat.com> | 2016-01-04 14:22:01 +0100 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2016-01-04 15:22:33 +0100 |
commit | 7a12be24aae7dd0ad6165614ba1e437f32bb5f70 (patch) | |
tree | e74512295e30e74596ae1c3cb14fac9ba223cfc9 | |
parent | d2816d595f7019c0e7e4b031d03faabaf033a653 (diff) | |
download | NetworkManager-bg/ppp-device-fixes-rh1268617.tar.gz |
device: update @ip_iface only if IP interface existsbg/ppp-device-fixes-rh1268617
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.c | 7 |
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; |