diff --git a/SOURCES/0001-ostree-prepare-root-Fix-etc-bind-mount.patch b/SOURCES/0001-ostree-prepare-root-Fix-etc-bind-mount.patch
new file mode 100644
index 0000000..1a59122
--- /dev/null
+++ b/SOURCES/0001-ostree-prepare-root-Fix-etc-bind-mount.patch
@@ -0,0 +1,28 @@
+From b3c7b059eaee3123d5b2523065726e866c533fe9 Mon Sep 17 00:00:00 2001
+From: Jonathan Lebon <jonathan@jlebon.com>
+Date: Fri, 28 Aug 2020 12:35:28 -0400
+Subject: [PATCH] ostree-prepare-root: Fix /etc bind mount
+
+We were bind-mounting the initramfs' `/etc` (to itself) instead of the
+target deployment `/etc` (to itself). Since we're already `chdir`'ed
+into it, we can just drop the leading slash.
+---
+ src/switchroot/ostree-prepare-root.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/switchroot/ostree-prepare-root.c b/src/switchroot/ostree-prepare-root.c
+index f7e4fe47..6351babb 100644
+--- a/src/switchroot/ostree-prepare-root.c
++++ b/src/switchroot/ostree-prepare-root.c
+@@ -251,7 +251,7 @@ main(int argc, char *argv[])
+        * sysroot, we still need a writable /etc.  And to avoid race conditions
+        * we ensure it's writable in the initramfs, before we switchroot at all.
+        */
+-      if (mount ("/etc", "/etc", NULL, MS_BIND, NULL) < 0)
++      if (mount ("etc", "etc", NULL, MS_BIND, NULL) < 0)
+         err (EXIT_FAILURE, "failed to make /etc a bind mount");
+       /* Pass on the fact that we discovered a readonly sysroot to ostree-remount.service */
+       int fd = open (_OSTREE_SYSROOT_READONLY_STAMP, O_WRONLY | O_CREAT | O_CLOEXEC, 0644);
+-- 
+2.26.2
+
diff --git a/SOURCES/0001-ostree-remount-Remount-etc-rw-if-needed.patch b/SOURCES/0001-ostree-remount-Remount-etc-rw-if-needed.patch
new file mode 100644
index 0000000..321600f
--- /dev/null
+++ b/SOURCES/0001-ostree-remount-Remount-etc-rw-if-needed.patch
@@ -0,0 +1,39 @@
+From a7a751b69f2315635d6ae38a0b1344287b67079a Mon Sep 17 00:00:00 2001
+From: Jonathan Lebon <jonathan@jlebon.com>
+Date: Fri, 28 Aug 2020 12:35:29 -0400
+Subject: [PATCH] ostree-remount: Remount /etc rw if needed
+
+When we remount `/sysroot` as read-only, we also make `/etc` read-only.
+This is usually OK because we then remount `/var` read-write, which also
+flips `/etc` back to read-write... unless `/var` is a separate
+filesystem and not a bind-mount to the stateroot `/var`.
+
+Fix this by just remounting `/etc` read-write in the read-only sysroot
+case.
+
+Eventually, I think we should rework this to set everything up the way
+we want from the initramfs (#2115). This would also eliminate the window
+during which `/etc` is read-only while `ostree-remount` runs.
+---
+ src/switchroot/ostree-remount.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/switchroot/ostree-remount.c b/src/switchroot/ostree-remount.c
+index cfd270bb..3981682a 100644
+--- a/src/switchroot/ostree-remount.c
++++ b/src/switchroot/ostree-remount.c
+@@ -112,6 +112,11 @@ main(int argc, char *argv[])
+   bool sysroot_configured_readonly = unlink (_OSTREE_SYSROOT_READONLY_STAMP) == 0;
+   do_remount ("/sysroot", !sysroot_configured_readonly);
+ 
++  /* And also make sure to make /etc rw again. We make this conditional on
++   * sysroot_configured_readonly because only in that case is it a bind-mount. */
++  if (sysroot_configured_readonly)
++    do_remount ("/etc", true);
++
+   /* If /var was created as as an OSTree default bind mount (instead of being a separate filesystem)
+     * then remounting the root mount read-only also remounted it.
+     * So just like /etc, we need to make it read-write by default.
+-- 
+2.26.2
+
diff --git a/SPECS/ostree.spec b/SPECS/ostree.spec
index eb4e7f0..e5688de 100644
--- a/SPECS/ostree.spec
+++ b/SPECS/ostree.spec
@@ -8,12 +8,14 @@
 Summary: Tool for managing bootable, immutable filesystem trees
 Name: ostree
 Version: 2020.5
-Release: 3%{?dist}
+Release: 4%{?dist}
 Source0: https://github.com/ostreedev/%{name}/releases/download/v%{version}/libostree-%{version}.tar.xz
 License: LGPLv2+
 URL: https://ostree.readthedocs.io/en/latest/
 
 Patch0: 0001-linuxfsutil-Pass-int-to-ioctl-not-long.patch
+Patch1: 0001-ostree-prepare-root-Fix-etc-bind-mount.patch
+Patch2: 0001-ostree-remount-Remount-etc-rw-if-needed.patch
 
 BuildRequires: git
 # We always run autogen.sh
@@ -164,6 +166,9 @@ find %{buildroot} -name '*.la' -delete
 %endif
 
 %changelog
+* Wed Sep 09 2020 Colin Walters <walters@verbum.org> - 2020.5-4
+- Backport patches for https://bugzilla.redhat.com/show_bug.cgi?id=1875567
+
 * Mon Aug 24 2020 Colin Walters <walters@verbum.org> - 2020.5-3
 - Backport
   https://github.com/ostreedev/ostree/pull/2179/commits/06ed04a816141914adb9bd3e32392801fce5bc8e