Commit 71b08379 authored by topjohnwu's avatar topjohnwu

Maintain global mount list

parent b100d0c5
......@@ -11,6 +11,8 @@
using namespace std;
vector<string> mount_list;
template<typename Func>
static void parse_cmdline(const Func &fn) {
char cmdline[4096];
......@@ -147,10 +149,13 @@ void load_kernel_info(cmdline *cmd) {
xmkdir("/sys", 0755);
xmount("sysfs", "/sys", "sysfs", 0, nullptr);
mount_list.emplace_back("/proc");
mount_list.emplace_back("/sys");
// Log to kernel
setup_klog();
parse_cmdline([=](string_view key, const char *value) -> void {
parse_cmdline([=](string_view key, const char *value) {
if (key == "androidboot.slot_suffix") {
strcpy(cmd->slot, value);
} else if (key == "androidboot.slot") {
......
......@@ -29,6 +29,8 @@ struct fstab_entry {
#define INIT_SOCKET "MAGISKINIT"
#define DEFAULT_DT_DIR "/proc/device-tree/firmware/android"
extern std::vector<std::string> mount_list;
void load_kernel_info(cmdline *cmd);
bool check_two_stage();
int dump_magisk(const char *path, mode_t mode);
......@@ -42,12 +44,11 @@ class BaseInit {
protected:
cmdline *cmd;
char **argv;
std::vector<std::string> mount_list;
[[noreturn]] void exec_init();
void read_dt_fstab(std::vector<fstab_entry> &fstab);
public:
BaseInit(char *argv[], cmdline *cmd) : cmd(cmd), argv(argv), mount_list{"/sys", "/proc"} {}
BaseInit(char *argv[], cmdline *cmd) : cmd(cmd), argv(argv) {}
virtual ~BaseInit() = default;
virtual void start() = 0;
};
......@@ -100,8 +101,6 @@ private:
public:
SecondStageInit(char *argv[]) : SARBase(argv, nullptr) {
LOGD("%s\n", __FUNCTION__);
// Do not unmount /sys and /proc
mount_list.clear();
};
void start() override {
prepare();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment