diff --git a/native/src/core/bootstages.rs b/native/src/core/bootstages.rs index b60bdf381..9a0045277 100644 --- a/native/src/core/bootstages.rs +++ b/native/src/core/bootstages.rs @@ -16,7 +16,7 @@ use nix::fcntl::OFlag; use std::io::BufReader; use std::os::unix::net::UnixStream; use std::process::{Command, Stdio}; -use std::sync::atomic::Ordering; +use std::sync::atomic::{AtomicBool, Ordering}; bitflags! { #[derive(Default)] @@ -185,7 +185,9 @@ impl MagiskD { setup_preinit_dir(); self.ensure_manager(); - self.zygisk.lock().unwrap().reset(true); + if self.zygisk_enabled.load(Ordering::Relaxed) { + self.zygisk.lock().unwrap().reset(true); + } } pub fn boot_stage_handler(&self, client: UnixStream, code: RequestCode) { diff --git a/native/src/core/daemon.rs b/native/src/core/daemon.rs index 43b16fb17..fc4b90233 100644 --- a/native/src/core/daemon.rs +++ b/native/src/core/daemon.rs @@ -33,7 +33,7 @@ use std::io::{BufReader, Write}; use std::os::fd::{AsFd, AsRawFd, IntoRawFd, RawFd}; use std::os::unix::net::{UCred, UnixListener, UnixStream}; use std::process::{Command, exit}; -use std::sync::atomic::AtomicBool; +use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::{Mutex, OnceLock}; use std::time::Duration; @@ -130,7 +130,9 @@ impl MagiskD { info!("** zygote restarted"); self.prune_su_access(); scan_deny_apps(); - self.zygisk.lock().unwrap().reset(false); + if self.zygisk_enabled.load(Ordering::Relaxed) { + self.zygisk.lock().unwrap().reset(false); + } } RequestCode::SQLITE_CMD => { self.db_exec_for_cli(client).ok();