add: support for magic mount in KSU and APatch

This commit allows ReZygisk to u(n)mount mounted paths in KSU and APatch environments using magic mount.
This commit is contained in:
ThePedroo
2024-12-24 16:56:49 -03:00
parent 7a892e0d62
commit b0a296fc29

View File

@@ -37,21 +37,30 @@ void revert_unmount_ksu() {
ksu_loop = info.source; ksu_loop = info.source;
continue; continue;
} }
// Unmount everything mounted to /data/adb // Unmount everything mounted to /data/adb
if (info.target.starts_with("/data/adb")) { if (info.target.starts_with("/data/adb")) {
targets.emplace_back(info.target); targets.emplace_back(info.target);
} }
// Unmount everything mounted to /data/adb
if (info.root.starts_with("/adb/modules")) {
targets.emplace_back(info.target);
}
// Unmount ksu overlays // Unmount ksu overlays
if (info.type == "overlay" if (info.type == "overlay"
&& info.source == KSU_OVERLAY_SOURCE && info.source == KSU_OVERLAY_SOURCE
&& std::find(DEVICE_PARTITIONS.begin(), DEVICE_PARTITIONS.end(), info.target) != DEVICE_PARTITIONS.end()) { && std::find(DEVICE_PARTITIONS.begin(), DEVICE_PARTITIONS.end(), info.target) != DEVICE_PARTITIONS.end()) {
targets.emplace_back(info.target); targets.emplace_back(info.target);
} }
// Unmount temp dir // Unmount temp dir
if (info.type == "tmpfs" && info.source == KSU_OVERLAY_SOURCE) { if (info.type == "tmpfs" && info.source == KSU_OVERLAY_SOURCE) {
targets.emplace_back(info.target); targets.emplace_back(info.target);
} }
} }
for (auto& info: parse_mount_info("self")) { for (auto& info: parse_mount_info("self")) {
// Unmount everything from ksu loop except ksu module dir // Unmount everything from ksu loop except ksu module dir
if (info.source == ksu_loop && info.target != MODULE_DIR) { if (info.source == ksu_loop && info.target != MODULE_DIR) {
@@ -98,21 +107,30 @@ void revert_unmount_apatch() {
ap_loop = info.source; ap_loop = info.source;
continue; continue;
} }
// Unmount everything mounted to /data/adb // Unmount everything mounted to /data/adb
if (info.target.starts_with("/data/adb")) { if (info.target.starts_with("/data/adb")) {
targets.emplace_back(info.target); targets.emplace_back(info.target);
} }
// Unmount everything mounted to /data/adb
if (info.root.starts_with("/adb/modules")) {
targets.emplace_back(info.target);
}
// Unmount ksu overlays // Unmount ksu overlays
if (info.type == "overlay" if (info.type == "overlay"
&& info.source == AP_OVERLAY_SOURCE && info.source == AP_OVERLAY_SOURCE
&& std::find(DEVICE_PARTITIONS.begin(), DEVICE_PARTITIONS.end(), info.target) != DEVICE_PARTITIONS.end()) { && std::find(DEVICE_PARTITIONS.begin(), DEVICE_PARTITIONS.end(), info.target) != DEVICE_PARTITIONS.end()) {
targets.emplace_back(info.target); targets.emplace_back(info.target);
} }
// Unmount temp dir // Unmount temp dir
if (info.type == "tmpfs" && info.source == AP_OVERLAY_SOURCE) { if (info.type == "tmpfs" && info.source == AP_OVERLAY_SOURCE) {
targets.emplace_back(info.target); targets.emplace_back(info.target);
} }
} }
for (auto& info: parse_mount_info("self")) { for (auto& info: parse_mount_info("self")) {
// Unmount everything from ksu loop except ksu module dir // Unmount everything from ksu loop except ksu module dir
if (info.source == ap_loop && info.target != MODULE_DIR) { if (info.source == ap_loop && info.target != MODULE_DIR) {