aboutsummaryrefslogtreecommitdiffstats
path: root/init/do_mounts.c
diff options
context:
space:
mode:
authorChristian Brauner <brauner@kernel.org>2024-02-06 16:18:43 +0100
committerChristian Brauner <brauner@kernel.org>2024-02-08 18:41:03 +0100
commit386dc41cf54dcf44ea40de1aca900f02b756cec0 (patch)
tree5e8a1d08c186c3081133848e5468109ccb0d2c13 /init/do_mounts.c
parent6613476e225e090cc9aad49be7fa504e290dd33d (diff)
downloadlinux-386dc41cf54dcf44ea40de1aca900f02b756cec0.tar.gz
init: flush async file closing
When unpacking the initramfs or when mounting block devices we need to ensure that any delayed fput() finished to prevent spurious errors. The init process can be a proper kernel thread or a user mode helper. In the latter case PF_KTHREAD isn't set. So we need to do both flush_delayed_work() and task_work_run(). Since we'll port block device opening and closing to regular file open and closing we need to ensure the same as for the initramfs. So just make that a little helper. Tested-by: Marek Szyprowski <m.szyprowski@samsung.com> Tested-by: Srikanth Aithal <sraithal@amd.com> Link: https://lore.kernel.org/r/CA+G9fYttTwsbFuVq10igbSvP5xC6bf_XijM=mpUqrJV=uvUirQ@mail.gmail.com Signed-off-by: Christian Brauner <brauner@kernel.org>
Diffstat (limited to 'init/do_mounts.c')
-rw-r--r--init/do_mounts.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/init/do_mounts.c b/init/do_mounts.c
index 279ad28bf4fb14..3c5fd993bc7e3e 100644
--- a/init/do_mounts.c
+++ b/init/do_mounts.c
@@ -208,6 +208,9 @@ retry:
goto out;
case -EACCES:
case -EINVAL:
+#ifdef CONFIG_BLOCK
+ init_flush_fput();
+#endif
continue;
}
/*