From 976fbbc8f15bd9a18f6ddc0e05e4619244208eed Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 12 Dec 2022 18:06:26 +0000 Subject: [PATCH] mount: Fix bind-mounting read-only shares Fixes: #12968 Signed-off-by: Michael Tremer --- src/libpakfire/mount.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/libpakfire/mount.c b/src/libpakfire/mount.c index c00bc658f..72ba4ac57 100644 --- a/src/libpakfire/mount.c +++ b/src/libpakfire/mount.c @@ -421,6 +421,18 @@ int pakfire_bind(struct pakfire* pakfire, const char* src, const char* dst, int return 1; } + // The Linux kernel seems to be quite funny when trying to bind-mount something + // as read-only and requires us to mount the source first, and then remount it + // again using MS_RDONLY. + if (flags & MS_RDONLY) { + r = pakfire_mount(pakfire, src, mountpoint, NULL, MS_BIND|MS_REC, NULL); + if (r) + return r; + + // Add the remount flag + flags |= MS_REMOUNT; + } + // Perform mount - return pakfire_mount(pakfire, src, mountpoint, NULL, flags|MS_REC|MS_BIND, NULL); + return pakfire_mount(pakfire, src, mountpoint, NULL, flags|MS_BIND|MS_REC, NULL); } -- 2.47.3