init: add an init_mount helper

Like do_mount, but takes a kernel pointer for the destination path.
Switch over the mounts in the init code and devtmpfs to it, which
just happen to work due to the implicit set_fs(KERNEL_DS) during early
init right now.

Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
Christoph Hellwig
2020-07-21 11:12:08 +02:00
parent 09cbcec07b
commit c60166f042
9 changed files with 46 additions and 11 deletions

View File

@@ -395,16 +395,16 @@ static int __init do_mount_root(const char *name, const char *fs,
int ret;
if (data) {
/* do_mount() requires a full page as fifth argument */
/* init_mount() requires a full page as fifth argument */
p = alloc_page(GFP_KERNEL);
if (!p)
return -ENOMEM;
data_page = page_address(p);
/* zero-pad. do_mount() will make sure it's terminated */
/* zero-pad. init_mount() will make sure it's terminated */
strncpy(data_page, data, PAGE_SIZE);
}
ret = do_mount(name, "/root", fs, flags, data_page);
ret = init_mount(name, "/root", fs, flags, data_page);
if (ret)
goto out;
@@ -628,7 +628,7 @@ void __init prepare_namespace(void)
mount_root();
out:
devtmpfs_mount();
do_mount(".", "/", NULL, MS_MOVE, NULL);
init_mount(".", "/", NULL, MS_MOVE, NULL);
ksys_chroot(".");
}