init: add an init_umount helper
[linux-2.6-block.git] / fs / init.c
CommitLineData
c60166f0
CH
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Routines that mimic syscalls, but don't use the user address space or file
4 * descriptors. Only for init/ and related early init code.
5 */
6#include <linux/init.h>
7#include <linux/mount.h>
8#include <linux/namei.h>
9#include <linux/fs.h>
10#include <linux/init_syscalls.h>
11#include "internal.h"
12
13int __init init_mount(const char *dev_name, const char *dir_name,
14 const char *type_page, unsigned long flags, void *data_page)
15{
16 struct path path;
17 int ret;
18
19 ret = kern_path(dir_name, LOOKUP_FOLLOW, &path);
20 if (ret)
21 return ret;
22 ret = path_mount(dev_name, &path, type_page, flags, data_page);
23 path_put(&path);
24 return ret;
25}
09267def
CH
26
27int __init init_umount(const char *name, int flags)
28{
29 int lookup_flags = LOOKUP_MOUNTPOINT;
30 struct path path;
31 int ret;
32
33 if (!(flags & UMOUNT_NOFOLLOW))
34 lookup_flags |= LOOKUP_FOLLOW;
35 ret = kern_path(name, lookup_flags, &path);
36 if (ret)
37 return ret;
38 return path_umount(&path, flags);
39}