diff --git a/native/jni/init/getinfo.cpp b/native/jni/init/getinfo.cpp index 52d492736..9e6c60fad 100644 --- a/native/jni/init/getinfo.cpp +++ b/native/jni/init/getinfo.cpp @@ -11,6 +11,8 @@ using namespace std; +vector mount_list; + template 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") { diff --git a/native/jni/init/init.hpp b/native/jni/init/init.hpp index b1cbcb722..3acf1ad55 100644 --- a/native/jni/init/init.hpp +++ b/native/jni/init/init.hpp @@ -29,6 +29,8 @@ struct fstab_entry { #define INIT_SOCKET "MAGISKINIT" #define DEFAULT_DT_DIR "/proc/device-tree/firmware/android" +extern std::vector 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 mount_list; [[noreturn]] void exec_init(); void read_dt_fstab(std::vector &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();