diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c
index c479db4..7d5584f 100644
--- a/src/platform/nm-linux-platform.c
+++ b/src/platform/nm-linux-platform.c
@@ -71,19 +71,14 @@ typedef struct {
 	GHashTable *udev_devices;
 
 	GHashTable *wifi_data;
 
 	int support_kernel_extended_ifa_flags;
 } NMLinuxPlatformPrivate;
 
-struct timestamp {
-	gint64 monotonic_ns;                /* clock_gettime (CLOCK_MONOTONIC); */
-	gint64 monotonic_timestamp_ns;      /* nm_utils_get_monotonic_timestamp_ns () */
-};
-
 #define NM_LINUX_PLATFORM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_LINUX_PLATFORM, NMLinuxPlatformPrivate))
 
 G_DEFINE_TYPE (NMLinuxPlatform, nm_linux_platform, NM_TYPE_PLATFORM)
 
 static const char *to_string_object (NMPlatform *platform, struct nl_object *obj);
 
 void
@@ -955,44 +950,39 @@ hack_empty_master_iff_lower_up (NMPlatform *platform, struct nl_object *object)
 			return;
 	}
 
 	rtnl_link_unset_flags (rtnllink, IFF_LOWER_UP);
 }
 
 static void
-_rtnladdr_get_timestamp (struct rtnl_addr *rtnladdr, struct timestamp *ts, guint32 *out_timestamp, guint32 *out_lifetime, guint32 *out_preferred)
+_rtnladdr_get_timestamp (struct rtnl_addr *rtnladdr, guint32 *out_timestamp, guint32 *out_lifetime, guint32 *out_preferred)
 {
 	guint32 a_preferred = rtnl_addr_get_preferred_lifetime (rtnladdr);
 	guint32 a_lifetime  = rtnl_addr_get_valid_lifetime (rtnladdr);
 	gint64 a_timestamp;
-	struct timestamp ts_local;
+	gint64 monotonic_ns;                /* clock_gettime (CLOCK_MONOTONIC); */
+	gint64 monotonic_timestamp_ns;      /* nm_utils_get_monotonic_timestamp_ns () */
 
 	if (a_preferred == NM_PLATFORM_LIFETIME_PERMANENT &&
 	    a_lifetime == NM_PLATFORM_LIFETIME_PERMANENT) {
 		*out_timestamp = 0;
 		*out_lifetime = NM_PLATFORM_LIFETIME_PERMANENT;
 		*out_preferred = NM_PLATFORM_LIFETIME_PERMANENT;
 	}
 
-	if (!ts) {
-		ts_local.monotonic_ns = _clock_gettime_ns ();
-		ts_local.monotonic_timestamp_ns = nm_utils_get_monotonic_timestamp_ns ();
-		ts = &ts_local;
-	} else if (ts->monotonic_timestamp_ns == 0) {
-		ts->monotonic_ns = _clock_gettime_ns ();
-		ts->monotonic_timestamp_ns = nm_utils_get_monotonic_timestamp_ns ();
-	}
+	monotonic_ns = _clock_gettime_ns ();
+	monotonic_timestamp_ns = nm_utils_get_monotonic_timestamp_ns ();
 
 	a_timestamp = rtnl_addr_get_last_update_time (rtnladdr);
 
 	/* convert a_timestamp to nsec of CLOCK_MONOTONIC. */
-	a_timestamp = _timestamp_nl_to_ns (a_timestamp, ts->monotonic_ns);
+	a_timestamp = _timestamp_nl_to_ns (a_timestamp, monotonic_ns);
 
 	/* convert a_timestamp to nm_utils_get_monotonic_timestamp_s () */
-	a_timestamp = (a_timestamp + (ts->monotonic_timestamp_ns - ts->monotonic_ns)) / NM_UTILS_NS_PER_SECOND;
+	a_timestamp = (a_timestamp + (monotonic_timestamp_ns - monotonic_ns)) / NM_UTILS_NS_PER_SECOND;
 
 	if (a_timestamp <= 0) {
 		/* the address existed before the start of NM, so the timestamp in
 		 * get_monotonic_timestamp_s() scale would be non-positive. Adjust the
 		 * lifetime accordingly. */
 
 		if (a_lifetime != NM_PLATFORM_LIFETIME_PERMANENT)
@@ -1005,28 +995,28 @@ _rtnladdr_get_timestamp (struct rtnl_addr *rtnladdr, struct timestamp *ts, guint
 	*out_timestamp = a_timestamp;
 	*out_lifetime = a_lifetime;
 	*out_preferred = a_preferred;
 }
 
 
 static gboolean
-init_ip4_address (NMPlatformIP4Address *address, struct rtnl_addr *rtnladdr, struct timestamp *ts)
+init_ip4_address (NMPlatformIP4Address *address, struct rtnl_addr *rtnladdr)
 {
 	struct nl_addr *nladdr = rtnl_addr_get_local (rtnladdr);
 	struct nl_addr *nlpeer = rtnl_addr_get_peer (rtnladdr);
 	const char *label;
 
 	g_return_val_if_fail (nladdr, FALSE);
 
 	memset (address, 0, sizeof (*address));
 
 	address->source = NM_PLATFORM_SOURCE_KERNEL;
 	address->ifindex = rtnl_addr_get_ifindex (rtnladdr);
 	address->plen = rtnl_addr_get_prefixlen (rtnladdr);
-	_rtnladdr_get_timestamp (rtnladdr, ts, &address->timestamp, &address->lifetime, &address->preferred);
+	_rtnladdr_get_timestamp (rtnladdr, &address->timestamp, &address->lifetime, &address->preferred);
 	if (address->lifetime == 0)
 		return FALSE;
 	if (address->preferred > address->lifetime)
 		address->preferred = address->lifetime;
 	if (!nladdr || nl_addr_get_len (nladdr) != sizeof (address->address)) {
 		g_return_val_if_reached (FALSE);
 		return FALSE;
@@ -1044,25 +1034,25 @@ init_ip4_address (NMPlatformIP4Address *address, struct rtnl_addr *rtnladdr, str
 	if (label && strchr (label, ':'))
 		g_strlcpy (address->label, label, sizeof (address->label));
 
 	return TRUE;
 }
 
 static gboolean
-init_ip6_address (NMPlatformIP6Address *address, struct rtnl_addr *rtnladdr, struct timestamp *ts)
+init_ip6_address (NMPlatformIP6Address *address, struct rtnl_addr *rtnladdr)
 {
 	struct nl_addr *nladdr = rtnl_addr_get_local (rtnladdr);
 	struct nl_addr *nlpeer = rtnl_addr_get_peer (rtnladdr);
 
 	memset (address, 0, sizeof (*address));
 
 	address->source = NM_PLATFORM_SOURCE_KERNEL;
 	address->ifindex = rtnl_addr_get_ifindex (rtnladdr);
 	address->plen = rtnl_addr_get_prefixlen (rtnladdr);
-	_rtnladdr_get_timestamp (rtnladdr, ts, &address->timestamp, &address->lifetime, &address->preferred);
+	_rtnladdr_get_timestamp (rtnladdr, &address->timestamp, &address->lifetime, &address->preferred);
 	if (address->lifetime == 0)
 		return FALSE;
 	if (address->preferred > address->lifetime)
 		address->preferred = address->lifetime;
 	address->flags = rtnl_addr_get_flags (rtnladdr);
 	if (!nladdr || nl_addr_get_len (nladdr) != sizeof (address->address)) {
 		g_return_val_if_reached (FALSE);
@@ -1180,25 +1170,25 @@ to_string_link (NMPlatform *platform, struct rtnl_link *obj)
 }
 
 static const char *
 to_string_ip4_address (struct rtnl_addr *obj)
 {
 	NMPlatformIP4Address pl_obj;
 
-	if (init_ip4_address (&pl_obj, obj, NULL))
+	if (init_ip4_address (&pl_obj, obj))
 		return nm_platform_ip4_address_to_string (&pl_obj);
 	SET_AND_RETURN_STRING_BUFFER ("(invalid ip4 address %p)", obj);
 }
 
 static const char *
 to_string_ip6_address (struct rtnl_addr *obj)
 {
 	NMPlatformIP6Address pl_obj;
 
-	if (init_ip6_address (&pl_obj, obj, NULL))
+	if (init_ip6_address (&pl_obj, obj))
 		return nm_platform_ip6_address_to_string (&pl_obj);
 	SET_AND_RETURN_STRING_BUFFER ("(invalid ip6 address %p)", obj);
 }
 
 static const char *
 to_string_ip4_route (struct rtnl_route *obj)
 {
@@ -1378,15 +1368,15 @@ announce_object (NMPlatform *platform, const struct nl_object *object, ObjectSta
 			g_signal_emit_by_name (platform, sig, device.ifindex, &device, reason);
 		}
 		return;
 	case IP4_ADDRESS:
 		{
 			NMPlatformIP4Address address;
 
-			if (!init_ip4_address (&address, (struct rtnl_addr *) object, NULL))
+			if (!init_ip4_address (&address, (struct rtnl_addr *) object))
 				return;
 
 			/* Address deletion is sometimes accompanied by route deletion. We need to
 			 * check all routes belonging to the same interface.
 			 */
 			switch (status) {
 			case REMOVED:
@@ -1399,15 +1389,15 @@ announce_object (NMPlatform *platform, const struct nl_object *object, ObjectSta
 			g_signal_emit_by_name (platform, sig, address.ifindex, &address, reason);
 		}
 		return;
 	case IP6_ADDRESS:
 		{
 			NMPlatformIP6Address address;
 
-			if (!init_ip6_address (&address, (struct rtnl_addr *) object, NULL))
+			if (!init_ip6_address (&address, (struct rtnl_addr *) object))
 				return;
 			g_signal_emit_by_name (platform, sig, address.ifindex, &address, reason);
 		}
 		return;
 	case IP4_ROUTE:
 		{
 			NMPlatformIP4Route route;
@@ -3085,22 +3075,21 @@ static GArray *
 ip4_address_get_all (NMPlatform *platform, int ifindex)
 {
 	NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform);
 	GArray *addresses;
 	NMPlatformIP4Address address;
 	struct nl_object *object;
 	int count;
-	struct timestamp ts = { 0 };
 
 	count = ip_address_mark_all (platform, AF_INET, ifindex);
 	addresses = g_array_sized_new (TRUE, TRUE, sizeof (NMPlatformIP4Address), count);
 
 	for (object = nl_cache_get_first (priv->address_cache); object; object = nl_cache_get_next (object)) {
 		if (nl_object_is_marked (object)) {
-			if (init_ip4_address (&address, (struct rtnl_addr *) object, &ts))
+			if (init_ip4_address (&address, (struct rtnl_addr *) object))
 				g_array_append_val (addresses, address);
 			nl_object_unmark (object);
 		}
 	}
 
 	return addresses;
 }
@@ -3109,22 +3098,21 @@ static GArray *
 ip6_address_get_all (NMPlatform *platform, int ifindex)
 {
 	NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform);
 	GArray *addresses;
 	NMPlatformIP6Address address;
 	struct nl_object *object;
 	int count;
-	struct timestamp ts = { 0 };
 
 	count = ip_address_mark_all (platform, AF_INET6, ifindex);
 	addresses = g_array_sized_new (TRUE, TRUE, sizeof (NMPlatformIP6Address), count);
 
 	for (object = nl_cache_get_first (priv->address_cache); object; object = nl_cache_get_next (object)) {
 		if (nl_object_is_marked (object)) {
-			if (init_ip6_address (&address, (struct rtnl_addr *) object, &ts))
+			if (init_ip6_address (&address, (struct rtnl_addr *) object))
 				g_array_append_val (addresses, address);
 			nl_object_unmark (object);
 		}
 	}
 
 	return addresses;
 }
