diff --git a/SOURCES/0675-sd-bus-deal-with-cookie-overruns.patch b/SOURCES/0675-sd-bus-deal-with-cookie-overruns.patch
new file mode 100644
index 0000000..7c1c194
--- /dev/null
+++ b/SOURCES/0675-sd-bus-deal-with-cookie-overruns.patch
@@ -0,0 +1,109 @@
+From 28f73a10df367721b30a95df5d729f6c56d318e5 Mon Sep 17 00:00:00 2001
+From: Jan Synacek <jsynacek@redhat.com>
+Date: Tue, 2 Apr 2019 10:23:30 +0200
+Subject: [PATCH] sd-bus: deal with cookie overruns
+
+Apparently this happens IRL. Let's carefully deal with issues like this:
+when we overrun, let's not go back to zero but instead leave the highest
+cookie bit set. We use that as indication that we are in "overrun
+territory", and then are particularly careful with checking cookies,
+i.e. that they haven't been used for still outstanding replies yet. This
+should retain the quick cookie generation behaviour we used to have, but
+permits dealing with overruns.
+
+Replaces: #11804
+Fixes: #11809
+
+(cherry picked from commit 1f82f5bb4237ed5f015daf93f818e9db95e764b8)
+(cherry picked from commit ac46d01c5f6a211bbbbb43e20f63ecae2549da20)
+
+Resolves: #1720699
+---
+ src/libsystemd/sd-bus/sd-bus.c | 49 +++++++++++++++++++++++++++++++++-
+ src/shared/macro.h             |  2 ++
+ 2 files changed, 50 insertions(+), 1 deletion(-)
+
+diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c
+index b0a3237..44ed2c7 100644
+--- a/src/libsystemd/sd-bus/sd-bus.c
++++ b/src/libsystemd/sd-bus/sd-bus.c
+@@ -1495,7 +1495,50 @@ _public_ int sd_bus_get_bus_id(sd_bus *bus, sd_id128_t *id) {
+         return 0;
+ }
+ 
++#define COOKIE_CYCLED (UINT32_C(1) << 31)
++
++static uint64_t cookie_inc(uint64_t cookie) {
++
++        /* Stay within the 32bit range, since classic D-Bus can't deal with more */
++        if (cookie >= UINT32_MAX)
++                return COOKIE_CYCLED; /* Don't go back to zero, but use the highest bit for checking
++                                       * whether we are looping. */
++
++        return cookie + 1;
++}
++
++static int next_cookie(sd_bus *b) {
++        uint64_t new_cookie;
++
++        assert(b);
++
++        new_cookie = cookie_inc(b->cookie);
++
++        /* Small optimization: don't bother with checking for cookie reuse until we overran cookiespace at
++         * least once, but then do it thorougly. */
++        if (FLAGS_SET(new_cookie, COOKIE_CYCLED)) {
++                uint32_t i;
++
++                /* Check if the cookie is currently in use. If so, pick the next one */
++                for (i = 0; i < COOKIE_CYCLED; i++) {
++                        if (!ordered_hashmap_contains(b->reply_callbacks, &new_cookie))
++                                goto good;
++
++                        new_cookie = cookie_inc(new_cookie);
++                }
++
++                /* Can't fulfill request */
++                return -EBUSY;
++        }
++
++good:
++        b->cookie = new_cookie;
++        return 0;
++}
++
+ static int bus_seal_message(sd_bus *b, sd_bus_message *m, usec_t timeout) {
++        int r;
++
+         assert(b);
+         assert(m);
+ 
+@@ -1510,7 +1553,11 @@ static int bus_seal_message(sd_bus *b, sd_bus_message *m, usec_t timeout) {
+         if (timeout == 0)
+                 timeout = BUS_DEFAULT_TIMEOUT;
+ 
+-        return bus_message_seal(m, ++b->cookie, timeout);
++        r = next_cookie(b);
++        if (r < 0)
++                return r;
++
++        return bus_message_seal(m, b->cookie, timeout);
+ }
+ 
+ static int bus_remarshal_message(sd_bus *b, sd_bus_message **m) {
+diff --git a/src/shared/macro.h b/src/shared/macro.h
+index 7a57f4e..08567d2 100644
+--- a/src/shared/macro.h
++++ b/src/shared/macro.h
+@@ -394,6 +394,8 @@ do {                                                                    \
+ 
+ #define SET_FLAG(v, flag, b) \
+         (v) = (b) ? ((v) | (flag)) : ((v) & ~(flag))
++#define FLAGS_SET(v, flags) \
++        ((~(v) & (flags)) == 0)
+ 
+ #define IN_SET(x, y, ...)                                               \
+         ({                                                              \
+-- 
+2.21.0
+
diff --git a/SOURCES/0676-core-Fix-edge-case-when-processing-proc-self-mountin.patch b/SOURCES/0676-core-Fix-edge-case-when-processing-proc-self-mountin.patch
new file mode 100644
index 0000000..f2de7c6
--- /dev/null
+++ b/SOURCES/0676-core-Fix-edge-case-when-processing-proc-self-mountin.patch
@@ -0,0 +1,38 @@
+From 403580d6e23991f414526a5fd90fb253210c07ba Mon Sep 17 00:00:00 2001
+From: Kyle Walker <kwalker@redhat.com>
+Date: Thu, 21 Mar 2019 15:09:06 -0400
+Subject: [PATCH] core: Fix edge case when processing /proc/self/mountinfo
+
+Currently, if there are two /proc/self/mountinfo entries with the same
+mount point path, the mount setup flags computed for the second of
+these two entries will overwrite the mount setup flags computed for
+the first of these two entries. This is the root cause of issue #7798.
+This patch changes mount_setup_existing_unit to prevent the
+just_mounted mount setup flag from being overwritten if it is set to
+true. This will allow all mount units created from /proc/self/mountinfo
+entries to be initialized properly.
+
+(cherry picked from commit 65d36b49508a53e56bae9609ff00fdc3de340608)
+(cherry picked from commit 1c9add7cc78fc65b043f9e87ab63bb2158d2ddf0)
+
+Resolves: #1722576
+---
+ src/core/mount.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/core/mount.c b/src/core/mount.c
+index 5fd7a86..c7aed23 100644
+--- a/src/core/mount.c
++++ b/src/core/mount.c
+@@ -1527,7 +1527,7 @@ static int mount_setup_unit(
+ 
+         if (set_flags) {
+                 MOUNT(u)->is_mounted = true;
+-                MOUNT(u)->just_mounted = !MOUNT(u)->from_proc_self_mountinfo;
++                MOUNT(u)->just_mounted = !MOUNT(u)->from_proc_self_mountinfo || MOUNT(u)->just_mounted;
+                 MOUNT(u)->just_changed = changed;
+         }
+ 
+-- 
+2.21.0
+
diff --git a/SPECS/systemd.spec b/SPECS/systemd.spec
index 844dc49..c4ac257 100644
--- a/SPECS/systemd.spec
+++ b/SPECS/systemd.spec
@@ -7,7 +7,7 @@
 Name:           systemd
 Url:            http://www.freedesktop.org/wiki/Software/systemd
 Version:        219
-Release:        62%{?dist}.7
+Release:        62%{?dist}.9
 # For a breakdown of the licensing, see README
 License:        LGPLv2+ and MIT and GPLv2+
 Summary:        A System and Service Manager
@@ -713,6 +713,8 @@ Patch0671: 0671-Allocate-temporary-strings-to-hold-dbus-paths-on-the.patch
 Patch0672: 0672-sd-bus-if-we-receive-an-invalid-dbus-message-ignore-.patch
 Patch0673: 0673-Revert-bus-when-dumping-string-property-values-escap.patch
 Patch0674: 0674-rules-fix-memory-hotplug-rule-so-systemd-detect-virt.patch
+Patch0675: 0675-sd-bus-deal-with-cookie-overruns.patch
+Patch0676: 0676-core-Fix-edge-case-when-processing-proc-self-mountin.patch
 
 %global num_patches %{lua: c=0; for i,p in ipairs(patches) do c=c+1; end; print(c);}
 
@@ -1689,6 +1691,12 @@ fi
 %{_mandir}/man8/systemd-resolved.*
 
 %changelog
+* Mon Jun 24 2019 Michal Sekletár <msekleta@redhat.com> - 219-62.9
+- core: Fix edge case when processing /proc/self/mountinfo (#1722576)
+
+* Wed Jun 19 2019 Michal Sekletár <msekleta@redhat.com> - 219-62.8
+- sd-bus: deal with cookie overruns (#1720699)
+
 * Wed Apr 24 2019 Lukas Nykryn <lnykryn@redhat.com> - 219-62.7
 - rules: fix memory hotplug rule so systemd-detect-virt does not run too often (#1701230)