diff --git a/SOURCES/0030-device-start-IP-conf-on-master-carrier-up-rh1576254.patch b/SOURCES/0030-device-start-IP-conf-on-master-carrier-up-rh1576254.patch
new file mode 100644
index 0000000..e8bf246
--- /dev/null
+++ b/SOURCES/0030-device-start-IP-conf-on-master-carrier-up-rh1576254.patch
@@ -0,0 +1,51 @@
+From 40cd552f21cebe867ada842f6054952a915c9681 Mon Sep 17 00:00:00 2001
+From: Beniamino Galvani <bgalvani@redhat.com>
+Date: Tue, 8 May 2018 14:05:22 +0200
+Subject: [PATCH] device: start IP configuration when master carrier goes up
+
+If the master has no carrier in act_stage3_ip6_config_start(), we set
+IP state WAIT and wait until carrier goes up before starting IP
+configuration.
+
+However, in carrier_changed() if the device state is ACTIVATED we only
+call nm_device_update_dynamic_ip_setup(), which just restarts DHCP if
+it was already running.
+
+Let's also ensure that we start IP configuration if the IP state is
+WAIT.
+
+Fixes: b0f6baad90a3d8b571a56cc255ad49d9fa26d874
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1575944
+(cherry picked from commit 1829126f3abe8af591af2d0906f04b3dae01743e)
+(cherry picked from commit f03ae35593f1ac1c1c717ac06b9076ee5e046783)
+---
+ src/devices/nm-device.c | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
+index 0e87d3da4..22594872a 100644
+--- a/src/devices/nm-device.c
++++ b/src/devices/nm-device.c
+@@ -2378,12 +2378,12 @@ carrier_changed (NMDevice *self, gboolean carrier)
+ 			* is restored. */
+ 			if (priv->state == NM_DEVICE_STATE_ACTIVATED)
+ 				nm_device_update_dynamic_ip_setup (self);
+-			else {
+-				if (nm_device_activate_ip4_state_in_wait (self))
+-					nm_device_activate_stage3_ip4_start (self);
+-				if (nm_device_activate_ip6_state_in_wait (self))
+-					nm_device_activate_stage3_ip6_start (self);
+-			}
++			/* If needed, also resume IP configuration that is
++			 * waiting for carrier. */
++			if (nm_device_activate_ip4_state_in_wait (self))
++				nm_device_activate_stage3_ip4_start (self);
++			if (nm_device_activate_ip6_state_in_wait (self))
++				nm_device_activate_stage3_ip6_start (self);
+ 			return;
+ 		}
+ 		/* fall-through and change state of device */
+-- 
+2.17.0
+
diff --git a/SOURCES/0031-device-fix-crash-during-reapply-rh1591631.patch b/SOURCES/0031-device-fix-crash-during-reapply-rh1591631.patch
new file mode 100644
index 0000000..ff565d5
--- /dev/null
+++ b/SOURCES/0031-device-fix-crash-during-reapply-rh1591631.patch
@@ -0,0 +1,28 @@
+From a8fd038e0c022a68fb557d0d32691b43be5e63b9 Mon Sep 17 00:00:00 2001
+From: Thomas Haller <thaller@redhat.com>
+Date: Thu, 14 Jun 2018 10:41:47 +0200
+Subject: [PATCH 1/1] device: fix crash during reapply
+
+Fixes: bf3b3d444c7750a68a0771d99f48e663815e258e
+(cherry picked from commit fe1f5871c8c77796dbb92fe9bf2a2100e9755eeb)
+(cherry picked from commit 28cf2ecd0dd9cfca949b7eac17b12dfe87a7c04c)
+---
+ src/devices/nm-device.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
+index 22594872a..28d449e7a 100644
+--- a/src/devices/nm-device.c
++++ b/src/devices/nm-device.c
+@@ -9340,7 +9340,7 @@ check_and_reapply_connection (NMDevice *self,
+ 
+ 	if (diffs) {
+ 		NMConnection *connection_clean = connection;
+-		gs_free NMConnection *connection_clean_free = NULL;
++		gs_unref_object NMConnection *connection_clean_free = NULL;
+ 
+ 		{
+ 			NMSettingConnection *s_con_a, *s_con_n;
+-- 
+2.17.1
+
diff --git a/SPECS/NetworkManager.spec b/SPECS/NetworkManager.spec
index 4980f10..92a0dda 100644
--- a/SPECS/NetworkManager.spec
+++ b/SPECS/NetworkManager.spec
@@ -9,7 +9,7 @@
 %global epoch_version 1
 %global rpm_version 1.10.2
 %global real_version 1.10.2
-%global release_version 14
+%global release_version 16
 %global snapshot %{nil}
 %global git_sha %{nil}
 
@@ -122,6 +122,8 @@ Patch26: 0026-dhcp-fix-lease-renewal-rh1503587.patch
 Patch27: 0027-retry-activation-parent-managed-rh1553595.patch
 Patch28: 0028-autoconnect-slaves-reconnects-same-connection-rh1548265.patch
 Patch29: 0029-trust-state-file-when-assuming-rh1551958.patch
+Patch30: 0030-device-start-IP-conf-on-master-carrier-up-rh1576254.patch
+Patch31: 0031-device-fix-crash-during-reapply-rh1591631.patch
 
 # The pregenerated docs contain default values and paths that depend
 # on the configure options when creating the source tarball.
@@ -430,6 +432,8 @@ by nm-connection-editor and nm-applet in a non-graphical environment.
 %patch27 -p1
 %patch28 -p1
 %patch29 -p1
+%patch30 -p1
+%patch31 -p1
 %patch9999 -p1
 
 %build
@@ -773,6 +777,12 @@ fi
 %endif
 
 %changelog
+* Fri Jun 15 2018 Thomas Haller <thaller@redhat.com> - 1:1.10.2-16
+- device: fix crash during reapply of connection settings (rh #1591631)
+
+* Wed Jun  6 2018 Beniamino Galvani <bgalvani@redhat.com> - 1:1.10.2-15
+- device: start IP configuration when master carrier goes up (rh #1576254)
+
 * Mon Apr 23 2018 Beniamino Galvani <bgalvani@redhat.com> - 1:1.10.2-14
 - manager: retry activating devices when the parent becomes managed (rh #1553595)
 - manager: allow autoconnect-slaves to reconnect the same connection (rh #1548265)