2.39-4: libmount fix
This commit is contained in:
parent
db855d07b8
commit
7961e208cd
85
libmount-don-t-call-hooks-after-mount.-type-helper.patch
Normal file
85
libmount-don-t-call-hooks-after-mount.-type-helper.patch
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
From f94a7760ed7ce81389a6059f020238981627a70d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Karel Zak <kzak@redhat.com>
|
||||||
|
Date: Thu, 25 May 2023 11:48:24 +0200
|
||||||
|
Subject: [PATCH] libmount: don't call hooks after mount.<type> helper
|
||||||
|
|
||||||
|
In case more filesystems are specified (or when libmount follows
|
||||||
|
/{etc,proc}/filesystems) then the library may try to use and
|
||||||
|
initialize the new API because for some filesystems, we need
|
||||||
|
exec(/sbin/mount.<type>) and for another fsopen().
|
||||||
|
|
||||||
|
The hooks that use the API have to smart and detect that the mount
|
||||||
|
operation was done in external /sbin/mount.<type> helper. And in this
|
||||||
|
case, the new API file descriptors must be ignored.
|
||||||
|
|
||||||
|
The exception is propagation flags, mount(8) can set the flags after
|
||||||
|
exec(/sbin/mount.<type>), for example, "mount -t ntfs --make-private".
|
||||||
|
|
||||||
|
Fixes: https://github.com/util-linux/util-linux/issues/2267
|
||||||
|
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||||
|
---
|
||||||
|
libmount/src/context_mount.c | 2 ++
|
||||||
|
libmount/src/hook_mount.c | 13 +++++++++++++
|
||||||
|
2 files changed, 15 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/libmount/src/context_mount.c b/libmount/src/context_mount.c
|
||||||
|
index cbb4f1fdf..40f9ed073 100644
|
||||||
|
--- a/libmount/src/context_mount.c
|
||||||
|
+++ b/libmount/src/context_mount.c
|
||||||
|
@@ -508,6 +508,8 @@ static int do_mount(struct libmnt_context *cxt, const char *try_type)
|
||||||
|
assert(cxt->fs);
|
||||||
|
assert((cxt->flags & MNT_FL_MOUNTFLAGS_MERGED));
|
||||||
|
|
||||||
|
+ mnt_context_reset_status(cxt);
|
||||||
|
+
|
||||||
|
if (try_type) {
|
||||||
|
rc = mnt_context_prepare_helper(cxt, "mount", try_type);
|
||||||
|
if (rc)
|
||||||
|
diff --git a/libmount/src/hook_mount.c b/libmount/src/hook_mount.c
|
||||||
|
index 924c71444..91483afa6 100644
|
||||||
|
--- a/libmount/src/hook_mount.c
|
||||||
|
+++ b/libmount/src/hook_mount.c
|
||||||
|
@@ -239,6 +239,10 @@ static int hook_create_mount(struct libmnt_context *cxt,
|
||||||
|
int rc = 0;
|
||||||
|
|
||||||
|
assert(cxt);
|
||||||
|
+
|
||||||
|
+ if (mnt_context_helper_executed(cxt))
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
assert(cxt->fs);
|
||||||
|
|
||||||
|
api = get_sysapi(cxt);
|
||||||
|
@@ -309,6 +313,9 @@ static int hook_reconfigure_mount(struct libmnt_context *cxt,
|
||||||
|
|
||||||
|
assert(cxt);
|
||||||
|
|
||||||
|
+ if (mnt_context_helper_executed(cxt))
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
api = get_sysapi(cxt);
|
||||||
|
assert(api);
|
||||||
|
assert(api->fd_tree >= 0);
|
||||||
|
@@ -379,6 +386,9 @@ static int hook_set_vfsflags(struct libmnt_context *cxt,
|
||||||
|
uint64_t set = 0, clr = 0;
|
||||||
|
int rc = 0;
|
||||||
|
|
||||||
|
+ if (mnt_context_helper_executed(cxt))
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
DBG(HOOK, ul_debugobj(hs, "setting VFS flags"));
|
||||||
|
|
||||||
|
ol = mnt_context_get_optlist(cxt);
|
||||||
|
@@ -471,6 +481,9 @@ static int hook_attach_target(struct libmnt_context *cxt,
|
||||||
|
const char *target;
|
||||||
|
int rc = 0;
|
||||||
|
|
||||||
|
+ if (mnt_context_helper_executed(cxt))
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
target = mnt_fs_get_target(cxt->fs);
|
||||||
|
if (!target)
|
||||||
|
return -EINVAL;
|
||||||
|
--
|
||||||
|
2.40.1
|
||||||
|
|
@ -2,7 +2,7 @@
|
|||||||
Summary: Collection of basic system utilities
|
Summary: Collection of basic system utilities
|
||||||
Name: util-linux
|
Name: util-linux
|
||||||
Version: 2.39
|
Version: 2.39
|
||||||
Release: 3%{?dist}
|
Release: 4%{?dist}
|
||||||
License: GPLv2 and GPLv2+ and LGPLv2+ and BSD with advertising and Public Domain
|
License: GPLv2 and GPLv2+ and LGPLv2+ and BSD with advertising and Public Domain
|
||||||
URL: https://en.wikipedia.org/wiki/Util-linux
|
URL: https://en.wikipedia.org/wiki/Util-linux
|
||||||
|
|
||||||
@ -100,6 +100,7 @@ Patch1: login-default-motd-file.patch
|
|||||||
|
|
||||||
### Upstream patches
|
### Upstream patches
|
||||||
Patch2: libmount-fix-options-prepend-insert-and-merging.patch
|
Patch2: libmount-fix-options-prepend-insert-and-merging.patch
|
||||||
|
Patch3: libmount-don-t-call-hooks-after-mount.-type-helper.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
The util-linux package contains a large variety of low-level system
|
The util-linux package contains a large variety of low-level system
|
||||||
@ -928,6 +929,9 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu May 25 2023 Karel Zak <kzak@redhat.com> - 2.39-4
|
||||||
|
- fix mount when /sbin/mount.<type> executed
|
||||||
|
|
||||||
* Mon May 22 2023 Karel Zak <kzak@redhat.com> - 2.39-3
|
* Mon May 22 2023 Karel Zak <kzak@redhat.com> - 2.39-3
|
||||||
- fix mount options prepend/insert and merging (upstream)
|
- fix mount options prepend/insert and merging (upstream)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user